如何在 Matplotlib 中設定散點圖的標記大小
Suraj Joshi
2023年1月30日
2020年6月9日
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
是標量或長度與 x
和 y
相同的陣列,用於設定 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
引數控制。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn