You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保持比例放大matplotlib中基于列值映射的散点尺寸

散点等比例放大调整方法

你当前散点整体过小的原因是直接将原始hv_mean_f0_fr_列的数值作为散点尺寸传入plt.scatter:matplotlib散点的s参数单位为磅平方,若原始频率值本身数值区间偏小(如集中在0.5~5Hz范围),渲染出的散点自然难以辨识。
由于散点尺寸和传入的s值是线性映射关系,只要给所有原始尺寸值乘一个固定的正系数,就能完全保留不同数据点之间的大小比例关系,同时实现整体放大。

快速修改方案

直接替换原有散点绘制部分的代码即可:

###scatter plots of results
s_raw = hvsrperfil_04.hv_mean_f0_fr_
# 缩放系数可自行调整:数值越大散点整体越大,点间比例保持不变
scale_coeff = 30
s_scaled = s_raw * scale_coeff
# 建议添加alpha透明度、白色细描边,避免散点遮挡底图、或同色点重叠难以分辨
plt.scatter(
    hvsrperfil_04.Longitude, 
    hvsrperfil_04.Latitude,
    c=s_raw,  # 颜色映射仍用原始值,保证色条对应真实频率
    s=s_scaled, 
    cmap='inferno', 
    label='HVSR Mean F0 Frequencies',
    alpha=0.8,
    edgecolors='white',
    linewidths=0.5
)
plt.colorbar(label='HVSR平均F0频率')

调整技巧

  • 缩放系数没有固定标准,可从20开始测试:如果散点还是偏小就增大系数(如调到50、80),如果散点过大遮挡底图要素就减小系数,直到视觉辨识度符合要求即可。
  • 如果需要精准控制散点的尺寸上下限(比如保证频率最低的点也足够清晰、频率最高的点不会过大),可以先对原始值做归一化,再映射到自定义的尺寸区间,点间的大小比例关系依旧不会被破坏,参考代码如下:
import numpy as np
s_raw = hvsrperfil_04.hv_mean_f0_fr_
# 自定义散点的最小、最大尺寸
min_size = 15
max_size = 220
# 归一化后映射到目标尺寸区间
s_norm = (s_raw - s_raw.min()) / (s_raw.max() - s_raw.min())
s_scaled = min_size + s_norm * (max_size - min_size)
# 后续scatter调用和上面一致,s参数传入s_scaled即可

注意:不要修改c参数传入的值,始终传入原始频率数据,才能保证颜色条的刻度对应真实的频率测量值,不会产生数据误导。

内容的提问来源于stack exchange,提问作者Daniele Ingredy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 21:06:21