pyplot.scatter 减小标记大小

pyplot.scatter reduce marker size

这里是一个高二维点密度的散点图示例,仅供说明。

如何减小标记的大小以更好地区分各个点?绘图的大小应保持原样。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import preprocessing
from matplotlib import cm

np.random.seed(10)

n=3000

x = np.arange(n)
z = np.sin(x/n)
y = np.random.randint(0, 100, size=(n))

colvals = preprocessing.minmax_scale(z)

plt.scatter(x, y, color=cm.rainbow(colvals), marker='.')
plt.xlabel('x')
plt.ylabel('y')

plt.show()

plt.scatter 有一个参数 s 用于控制标记大小。

  • s 可以是适用于所有点的单个浮点数,例如所有尺码 5:

    s = 5
    plt.scatter(x, y, color=cm.viridis(colvals), marker='.', s=s)
    

  • s可以是映射到每个点的大小数组,例如当 z > 0.5 时为 5 号,否则为 30 号:

    s = np.where(z > 0.5, 5, 30)
    plt.scatter(x, y, color=cm.viridis(colvals), marker='.', s=s)
    


请注意,为了匹配散点标记和绘图标记的大小,绘图标记的 markersize 应该是散点标记的 s:

的平方根
s = 900

plt.scatter(-1, 0, s=s, color='tab:orange')
plt.plot(1, 0, 'o', markersize=s ** 0.5)