在 Matplotlib 中为散点图设置颜色

Suraj Joshi 2024年2月15日
在 Matplotlib 中为散点图设置颜色

要在 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() 方法将从给定的颜色集中创建一个循环列表,每一行都从循环列表中挑选一种颜色来绘制散点图。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相关文章 - Matplotlib Scatter Plot

相关文章 - Matplotlib Color