在 Matplotlib 中为散点图设置颜色
Suraj Joshi
2020年11月24日
要在 Matplotlib 中设置标记的颜色,我们在 matplotlib.pyplot.scatter()
方法中设置 c
参数。
在 Scatterplot 中设置标记的颜色
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6,7]
y=[2,1,4,7,4,3,2]
plt.scatter(x,y,c="red")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Simple Scatter Plot")
plt.show()
输出:
这里,我们通过在 scatter()
方法中设置 c="red"
,将散点图中所有标记的颜色设置为红色。
如果我们有两个不同的数据集,我们可以使用 c
参数的不同值为每个数据集使用不同的颜色。
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6,7]
y1=[2,1,4,7,4,3,2]
y2=[4,4,5,3,8,9,6]
plt.scatter(x,y1,c="red")
plt.scatter(x,y2,c="green")
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Scatter Plot of two different datasets")
plt.show()
输出:
这里,数据集 y1
在散点图中用红色表示,而数据集 y2
在散点图中用绿色表示。
如果有大量的数据集,每次都要手动给每个数据集分配颜色会很困难。在这种情况下,我们可以使用 colormap
来生成每一个数据集的颜色。
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x=np.array([1,2,3,4,5])
y=np.random.random((10,5))
colors = cm.rainbow(np.linspace(0, 1, y.shape[0]))
for dataset,color in zip(y,colors):
plt.scatter(x,dataset,color=color)
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
输出:
它为矩阵 y
中的每一行生成不同的颜色,并为每一行绘制不同的颜色。
除了使用生成的颜色图,我们还可以在列表中指定用于散点图的颜色,并将列表传递给 itertools.cycle()
方法,以制作一个自定义的颜色循环。为了遍历颜色,我们使用 next()
函数。
import itertools
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
x=np.array([1,2,3,4,5])
y=np.random.random((10,5))
color_cycle= itertools.cycle(["orange","pink","blue","brown","red","grey","yellow","green"])
for row in y:
plt.scatter(x,row,color=next(color_cycle))
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
输出:
itertools.cycle()
方法将从给定的颜色集中创建一个循环列表,每一行都从循环列表中挑选一种颜色来绘制散点图。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn