在 Matplotlib 中為散點圖設定顏色

Suraj Joshi 2020年11月24日
在 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