首先,标记的大小以点为单位,而不是以像素为单位 . 在排版中,the point是最小的度量单位,在matplotlib中对应于1/72英寸的固定长度 . 相反,像素的大小将根据图形dpi和大小而变化 .
其次, plt.scatter 中标记的大小与圆的直径有关,而与半径无关 .
因此,每个标记的点数大小应计算如下:
size_in_points = (2 * radius_in_pixels / fig_dpi * 72 points/inch)**2
此外,如下面的MWE所示,可以直接用matplotlib transformations计算标记半径的大小,而不必事先生成空图:
import numpy as np
import matplotlib.pyplot as plt
plt.close('all')
# Generate some data :
N = 25
x = np.random.rand(N) + 0.5
y = np.random.rand(N) + 0.5
r = np.random.rand(N)/10
# Plot the data :
fig = plt.figure(facecolor='white', figsize=(7, 7))
ax = fig.add_subplot(111, aspect='equal')
ax.grid(True)
scat = ax.scatter(x, y, s=0, alpha=0.5, clip_on=False)
ax.axis([0, 2, 0,