在matplotlib上的散点图中为每个系列设置不同的颜色

假设我有三个数据集:


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套来做到这一点?


我进行了搜索,可以找到我所要求的任何参考。


编辑:澄清(希望)我的问题


如果我多次调用散点图,则只能在每个散点图上设置相同的颜色。另外,我知道我可以手动设置颜色阵列,但是我敢肯定有更好的方法可以做到这一点。我的问题是:“如何自动散布多个数据集,每个数据集具有不同的颜色。


如果有帮助,我可以轻松地为每个数据集分配一个唯一的编号。


慕斯王
浏览 12971回答 3
3回答

绝地无双

一个简单的解决方法如果您只有一种类型的集合(例如,没有误差线的散点图),则还可以在绘制它们后更改颜色,这有时更易于执行。import matplotlib.pyplot as pltfrom random import randintimport numpy as np#Let's generate some random X, Y data X = [ [frst group],[second group] ...]X = [ [randint(0,50) for i in range(0,5)] for i in range(0,24)]Y = [ [randint(0,50) for i in range(0,5)] for i in range(0,24)]labels = range(1,len(X)+1)fig = plt.figure()ax = fig.add_subplot(111)for x,y,lab in zip(X,Y,labels):        ax.scatter(x,y,label=lab)您唯一需要的一段代码:#Now this is actually the code that you need, an easy fix your colors just cut and paste not you need ax.colormap = plt.cm.gist_ncar #nipy_spectral, Set1,Paired  colorst = [colormap(i) for i in np.linspace(0, 0.9,len(ax.collections))]       for t,j1 in enumerate(ax.collections):    j1.set_color(colorst[t])ax.legend(fontsize='small')即使在同一子图中有许多不同的散点图,输出也会为您提供不同的颜色。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python