假设我有三个数据集:
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套怎么做得到?
我搜索了这个,可以找到任何关于我所问问题的参考资料。
编辑:澄清(希望)我的问题
如果我多次调用散点,我只能在每个散点上设置相同的颜色。此外,我知道我可以手动设置颜色阵列,但我相信有更好的方法来做到这一点。我的问题是,“我如何自动分散绘制我的几个数据集,每个数据集都有不同的颜色。
如果有帮助,我可以很容易地为每个数据集分配一个唯一的数字。
如果您只有一种类型的集合(例如没有错误条的散点),您也可以在绘制它们之后更改颜色,这有时更容易执行。
import matplotlib.pyplot as plt
from random import randint
import 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')
即使在同一子图中有许多不同的散点图,输出也会为您提供不同的颜色。
在matplotlib中,使用不同颜色的点绘制图的通常方法是将颜色列表作为参数传递。
例如。:
import matplotlib.pyplot
matplotlib.pyplot.scatter([1,2,3],[4,5,6],color=['red','green','blue'])
当您有一个列表列表,并且您希望它们按列表着色时。我认为最优雅的方法是@DSM建议的,只是做一个循环,发出多个呼叫来分散。
但是如果出于某种原因,你想只用一个调用就完成,你可以用一个列表理解和一点地板划分来列出一大堆颜色:
import matplotlib
import numpy as np
X = [1,2,3,4]
Ys = np.array([[4,8,12,16],
[1,4,9,16],
[17, 10, 13, 18],
[9, 10, 18, 11],
[4, 15, 17, 6],
[7, 10, 8, 7],
[9, 0, 10, 11],
[14, 1, 15, 5],
[8, 15, 9, 14],
[20, 7, 1, 5]])
nCols = len(X)
nRows = Ys.shape[0]
colors = matplotlib.cm.rainbow(np.linspace(0, 1, len(Ys)))
cs = [colors[i//len(X)] for i in range(len(Ys)*len(X))] #could be done with numpy's repmat
Xs=X*nRows #use list multiplication for repetition
matplotlib.pyplot.scatter(Xs,Ys.flatten(),color=cs)
cs = [array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.5, 0. , 1. , 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
array([ 0.28039216, 0.33815827, 0.98516223, 1. ]),
...
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00]),
array([ 1.00000000e+00, 1.22464680e-16, 6.12323400e-17,
1.00000000e+00])]
我不知道你说的手动是什么意思。你可以选择一个颜色贴图,并使一个颜色数组很容易:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x = np.arange(10)
ys = [i+x+(i*x)**2 for i in range(10)]
colors = cm.rainbow(np.linspace(0, 1, len(ys)))
for y, c in zip(ys, colors):
plt.scatter(x, y, color=c)
或者,您可以使用itertools.cycle
制作自己的颜色循环器,并指定要循环使用的颜色,使用Next
获取所需的颜色。例如,有3种颜色:
import itertools
colors = itertools.cycle(["r", "b", "g"])
for y in ys:
plt.scatter(x, y, color=next(colors))
想一想,也许不使用zip
和第一个也更干净:
colors = iter(cm.rainbow(np.linspace(0, 1, len(ys))))
for y in ys:
plt.scatter(x, y, color=next(colors))
我试图做一个散点图,并用列表中的不同数字注释数据点。例如,我想绘制vs,并用中的相应数字进行注释。 有什么想法吗?
问题内容: 我正在尝试绘制散点图,并用列表中的不同数字注释数据点。因此,例如,我想绘制并使用中的相应数字进行注释。 有任何想法吗? 问题答案: 我不知道有任何采用数组或列表的绘图方法,但是可以在对中的值进行迭代时使用。 的格式设置选项很多
我试图在两个图上绘制熊猫数据帧。一个是matplotlib pyplot饼图,另一个是seaborn条形图。在每个图表上,我根据不同的列对数据框进行排序。此外,每个图表都代表数据框排序所依据的相应值。因此,两个图表中的行顺序不同。这样,数据框中相同的索引(或类别)在图表上以不同的颜色出现,这是令人困惑的。为了在不同的图表上有相同颜色的索引,我如何解决这个问题? 我的代码: 例如,1.1。15200
问题内容: 我想制作一个散点图(使用matplotlib),其中根据第三个变量对点进行阴影处理。我对此非常了解: 其中w和M是数据点,而p是我要相对于其着色的变量。 但是我想用灰度而不是彩色。有人可以帮忙吗? 问题答案: 无需手动设置颜色。相反,请指定灰度颜色图… 或者,如果你希望使用更大范围的颜色图,也可以将 指定为。要使用其中任何一个的反向版本,只需指定其中任何一个的“ ”版本即可。例如,而不
我已经研究了如何更改Angulal-Chart.js的颜色,但它涉及整个(数据集)的颜色,而不是特定的条。 我要寻找的是一种在条形图中为每个条形应用不同颜色的方法;从图表到角度。 所以,我有一个条形图: 使用以下角度代码(当然是在控制器中) 其中将返回随机颜色。 现在,字段将此颜色应用于所有条: 当我真的想为每个酒吧不同的颜色: 柱塞
我使用Matplolib和熊猫数据帧创建了一个散点图,现在我想给它添加一个图例。这是我的代码: 这里发生的是,根据,散点图中点的颜色将改变。所以,因为颜色是“动态的”,我在创造传奇时遇到了很多麻烦。实际的代码只会创建一个带有一个名为“测试”的标签的图例,而附近没有任何颜色。 以下是数据示例: 我试过了,但我不明白的是: > 如何动态设置图例的标签?例如,我的代码说