如何在 Matplotlib 中設定散點圖的標記大小

Suraj Joshi 2023年1月30日
  1. 函式 scatter()s 關鍵字引數
  2. Matplotlib plot 方法中用 markersize 引數以控制大小
如何在 Matplotlib 中設定散點圖的標記大小

Matplotlib 中散點圖中標記的大小由函式 scatter()s 關鍵字引數控制,其中 s 是標量或陣列。

函式 scatter()s 關鍵字引數

scatter 函式的語法:

matplotlib.pyplot.scatter(
    x,
    y,
    s=None,
    c="b",
    marker="o",
    cmap=None,
    norm=None,
    vmin=None,
    vmax=None,
    alpha=None,
    linewidths=None,
    faceted=True,
    verts=None,
    hold=None,
    **kwargs
)

其中,s 是標量或長度與 xy 相同的陣列,用於設定 markersize。預設標記大小為 rcParams['lines.markersize'] ** 2。根據文件,s 是標記大小的平方。

為所有點設定相同的標記大小

import numpy as np
import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = np.sin(x)

plt.scatter(x, y, s=500, c="magenta")

plt.title("Scatter plot of sinx")
plt.xlabel("x")
plt.ylabel("sinx")
plt.xlim(0, 6)
plt.ylim(-2, 2)
plt.show()

均勻增加散點圖的標記大小

不一致地增加點的標記大小

標記寬度加倍

為了使標記的寬度(或高度)加倍,我們需要將 s 增加 4 倍,因為 A = W*H => (2W)*(2H)= 4A

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [a ** 2 for a in x]
s = [10 * 4 ** n for n in range(len(x))]
plt.scatter(x, y, s=s)
plt.title("Doubling width of marker in scatter plot")
plt.xlabel("x")
plt.ylabel("x**2")
plt.xlim(0, 6)
plt.ylim(0, 30)
plt.show()

標記寬度加倍

標記面積加倍

要使標記的面積增加一倍,我們將 area 增加 2 倍,以便標記尺寸隨 area 線性縮放。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [a ** 2 for a in x]
s = [10 * 2 ** n for n in range(len(x))]
plt.scatter(x, y, s=s)
plt.title("Doubling area of marker in scatter plot")
plt.xlabel("x")
plt.ylabel("x**2")
plt.xlim(0, 6)
plt.ylim(0, 30)
plt.show()

標記面積加倍

Matplotlib plot 方法中用 markersize 引數以控制大小

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [0] * len(x)

plt.plot(x, y, "bo", markersize=10)
plt.show()

在這裡,圓的面積由 markersize 引數控制。

markersize 引數以控制繪圖方法中的大小

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Matplotlib Scatter