Mathematica散点图美化

  • A+
摘要这篇文章会介绍一下在mathematica中绘制散点图的另外一种办法,并给出一些美化散点图的方法。

散点图是我们在可视化里经常会使用的一种图形,这一篇文章会讲一下一种关于散点图的美化方式,增加颜色和大小。(这里不使用ListPlot进行绘制,而是使用了另外的一个方法)

同时,如果我们把颜色和大小也看成两个维度的话,我们就可以使用二维的散点图画出有四个维度的数据来,还是很方便的。

增加散点的色彩

我们首先增加散点图的颜色,颜色是可以用来分类的。如有三种不同类型的产品的散点图,我们就可以用三种颜色来表示,我们看一下下面的实现方法:

(*pts中的数据类似{名字,横座标,纵座标,大小,随机数(用来控制最后的颜色)}*)
pts = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20],  17, RandomReal[]}, {i, 100}];
(*画出圆盘的位置和对应的大小*)
fp[{name_, x_, y_, size_, c_}] := Style[Disk[{x, y}, Sqrt[size]/10], Hue[c]];
(*对pts中每个数据做fp函数的作用*)
Graphics[fp /@ pts, Axes -> True, AxesOrigin -> {0, 0}]

所以的注释都已经写在代码中了,运行上面的代码,可以得到如下的图:

文艺数学君散点图

上面这个颜色是随机的,下面看一下我们在实际中可能会遇到的情况:

(*pts中的数据类似{名字,横座标,纵座标,大小,随机数(用来控制最后的颜色)}*)
pts1 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20], 17, .3}, {i, 30}];
pts2 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20], 17, .5}, {i, 30}];
pts3 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20], 17, .7}, {i, 30}];
(*画出圆盘的位置和对应的大小*)
fp[{name_, x_, y_, size_, c_}] := Style[Disk[{x, y}, Sqrt[size]/10], Hue[c]];
(*对pts中每个数据做fp函数的作用*)
Graphics[fp /@ (Flatten[{pts1, pts2, pts3}, 1]), Axes -> True,  AxesOrigin -> {0, 0}]

上面的pts1,pts2,pts3就代表三种数据,然后我们就可以使用颜色来区分三种数据,可以得到下面的图:

关于修改颜色就到这里,下面看一下如何修改大小。

增加散点的大小

下面我们看一下如何修改散点的大小,其实上面的代码注释上已经写得很明白了,下面还是直接看代码:

(*pts中的数据类似{名字,横座标,纵座标,大小,随机数(用来控制最后的颜色)}*)
pts = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20],  RandomInteger[50], RandomReal[]}, {i, 100}];
(*画出圆盘的位置和对应的大小*)
fp[{name_, x_, y_, size_, c_}] :=  Style[Disk[{x, y}, Sqrt[size]/10], Hue[c]];
(*对pts中每个数据做fp函数的作用*)
Graphics[fp /@ pts, Axes -> True, AxesOrigin -> {0, 0}]

在这一副图中我们随机了点的大小和颜色。

最后我们来看一下颜色固定,来修改大小的情况:

(*pts中的数据类似{名字,横座标,纵座标,大小,随机数(用来控制最后的颜色)}*)
pts1 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20],  RandomReal[20], .3}, {i, 30}];
pts2 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20],  RandomReal[{10, 30}], .5}, {i, 30}];
pts3 = Table[{"Name" <> ToString[i], RandomReal[20], RandomReal[20],  RandomReal[{20, 40}], .7}, {i, 30}];
(*画出圆盘的位置和对应的大小*)
fp[{name_, x_, y_, size_, c_}] :=   Style[Disk[{x, y}, Sqrt[size]/10], Hue[c]];
(*对pts中每个数据做fp函数的作用*)
Graphics[fp /@ (Flatten[{pts1, pts2, pts3}, 1]), Axes -> True,  AxesOrigin -> {0, 0}]

于是就能得到下面的这幅图:

到这里,我们就能灵活对散点图进行灵活的绘制了。

  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: