如何调整mpl-scatter-density散点密度图中的点大小?
如何调整mpl-scatter-density密度图的视觉点大小
mpl-scatter-density的scatter_density函数本质是生成二维核密度热力图,而非直接绘制单个散点。你觉得“点极小”,其实是密度图的粒度或核扩散范围太小导致的,可通过以下方式调整视觉效果:
方法1:调整密度核的扩散范围(sigma参数)
sigma控制密度计算时的核标准差,数值越大,单个数据点对周围区域的影响范围越广,生成的密度色块会更大、更平滑。
修改后的代码:
import numpy as np import matplotlib.pyplot as plt import mpl_scatter_density n = 5_000 x = np.random.normal(4, 2, n) y = np.random.normal(3, 1, n) fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection='scatter_density') # 增大sigma值,让密度区域更扩散 density = ax.scatter_density(x, y, sigma=2) fig.colorbar(density, label='Number of points per pixel') plt.show()
方法2:调整渲染像素尺寸(pixel_size参数)
pixel_size控制密度图渲染时的单个像素物理尺寸,数值越大,像素颗粒感越强,视觉上密度区域也会显得更大。可结合sigma一起调整:
density = ax.scatter_density(x, y, pixel_size=2, sigma=1.5)
额外需求:叠加显示大尺寸散点
如果你需要同时显示单个散点和密度图,可在密度图基础上叠加普通scatter函数,通过s参数控制散点大小:
import numpy as np import matplotlib.pyplot as plt import mpl_scatter_density n = 5_000 x = np.random.normal(4, 2, n) y = np.random.normal(3, 1, n) fig = plt.figure() ax = fig.add_subplot(1, 1, 1, projection='scatter_density') # 绘制密度图(半透明) density = ax.scatter_density(x, y, alpha=0.5) # 叠加普通散点,s控制大小,alpha控制透明度避免遮挡 ax.scatter(x, y, s=20, alpha=0.2, color='red') fig.colorbar(density, label='Number of points per pixel') plt.show()
内容的提问来源于stack exchange,提问作者user21521800
相关产品推荐
相关产品推荐

