假设我有三个数据集:
X = [1,2,3,4]
Y1 = [4,8,12,16]
Y2 = [1,4,9,16]
我可以用散点图来表示:
from matplotlib import pyplot as plt
plt.scatter(X,Y1,color='red')
plt.scatter(X,Y2,color='blue')
plt.show()
我怎么能用10套呢?
我搜索了这个,可以找到任何参考我所问的。
编辑:澄清(希望)我的问题
如果我多次调用scatter,我只能在每个scatter上设置相同的颜色。另外,我知道我可以手动设置颜色数组,但我相信有更好的方法来做到这一点。我的问题是,“我如何能自动散点图我的几个数据集,每一个都有不同的颜色。
如果这有帮助的话,我可以很容易地为每个数据集分配一个唯一的编号。
8条答案
按热度按时间vfh0ocws1#
我不知道你说的“手动”是什么意思。你可以选择一个colourmap并很容易地制作一个颜色数组:
或者你可以使用
itertools.cycle
制作你自己的颜色循环器,指定你想要循环的颜色,使用next
得到你想要的颜色。例如,使用3种颜色:想一想,也许不使用
zip
和第一个更干净:yhxst69z2#
在matplotlib中,用不同颜色的点绘制图的正常方法是传递一个颜色列表作为参数。
例如:
当你有一个列表的列表,你想他们每个列表的颜色。我认为最优雅的方法是@DSM建议的,只需执行一个循环,多次调用分散。
但是,如果出于某种原因,你想只调用一次,你可以制作一个大的颜色列表,带有列表理解和一点地板划分:
krcsximq3#
一个简单的修复
如果您只有一种类型的集合(例如没有误差线的散点图),您也可以在绘制它们之后更改颜色,这有时更容易执行。
你只需要一段代码:
即使在同一子图中有许多不同的散点图,输出也会显示不同的颜色。
5ktev3wc4#
你可以像这样使用
plot()
函数:eoigrqb65#
在2013年1月和matplotlib 1.3.1(2013年8月)之前,这个问题有点棘手,这是您可以在matpplotlib网站上找到的最古老的稳定版本。但在那之后就很琐碎了。
因为当前版本的
matplotlib.pylab.scatter
支持赋值:颜色名称字符串的数组,具有颜色Map的浮点数的数组,RGB或RGBA的数组。这个答案献给@Oxinabox在2015年修正2013版自己的无尽激情。
你有两个选择使用分散命令与多种颜色在一个单一的调用。
1.作为
pylab.scatter
命令支持使用RGBA阵列做任何你想要的颜色;1.早在2013年初,就没有办法这样做,因为命令仅支持整个散射点集合的单色。当我在做我的10000行项目时,我想出了一个通用的解决方案来绕过它。所以它很俗气,但我可以做任何形状,颜色,大小和透明。这个技巧也可以应用于绘制路径集合,线集合....
代码的灵感也来自于
pyplot.scatter
的源代码,我只是复制了scatter所做的事情,而没有触发它绘制。命令
pyplot.scatter
返回一个PatchCollection
对象,在文件“matplotlib/collections.py“中,一个私有变量_facecolors
在Collection
类和一个方法set_facecolors
。所以每当你有一个散点绘制你可以这样做:
mgdq6dx16#
对于大型数据集和有限数量的颜色,一个更快的解决方案是使用Pandas和groupby函数:
hpxqektj7#
这对我很有效:
对于每个系列,使用随机rgb颜色发生器
gjmwrych8#
您还可以创建一个颜色列表,其中包括散点图中所需的所有颜色,并将其作为内部参数,如: