小编典典

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

all

假设我有三个数据集:

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
上设置相同的颜色。另外,我知道我可以手动设置颜色数组,但我确信有更好的方法来做到这一点。我的问题是,“我怎样才能自动散点图我的几个数据集,每个数据集都有不同的颜色。

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


阅读 188

收藏
2022-06-25

共1个答案

小编典典

我不知道您所说的“手动”是什么意思。您可以选择颜色图并轻松制作颜色数组:

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)

不同颜色的 Matplotlib
图

itertools.cycle或者,您可以使用并指定要循环的颜色来制作自己的颜色循环器,next以获取所需的颜色。例如,有 3 种颜色:

import itertools

colors = itertools.cycle(["r", "b", "g"])
for y in ys:
    plt.scatter(x, y, color=next(colors))

Matplotlib 图只有 3
种颜色

想一想,也许不zip与第一个一起使用更清洁:

colors = iter(cm.rainbow(np.linspace(0, 1, len(ys))))
for y in ys:
    plt.scatter(x, y, color=next(colors))
2022-06-25