在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 套做到这一点?
我搜索了这个,可以找到任何关于我所问内容的参考。
编辑:澄清(希望)我的问题
如果我多次调用 scatter ,我只能在每个 scatter 上设置相同的颜色。另外,我知道我可以手动设置颜色数组,但我确信有更好的方法来做到这一点。我的问题是,“我怎样才能自动散点图我的几个数据集,每个数据集都有不同的颜色。
如果这有帮助,我可以轻松地为每个数据集分配一个唯一编号。
Answers
我不知道您所说的“手动”是什么意思。您可以选择颜色图并轻松制作颜色数组:
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))
更多推荐

所有评论(0)