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

Matplotlib的hexbin中C着色参数为何会导致图形形状改变?

现象原因

你观察到的图形形状差异并非六边形分箱(bin)的位置发生了改变,核心是hexbin在传入和不传入C参数时的逻辑差异和视觉误导导致的:

  • 不传入C参数时:hexbin每个分箱的颜色对应箱内的样本点数量,只要箱内点数≥mincnt=1就会被渲染,颜色映射范围自动匹配所有分箱的计数值。
  • 传入C参数时:hexbin会对每个分箱内所有样本的C值执行聚合运算,默认聚合函数为numpy.mean,运算结果作为该分箱的颜色值。此时默认的颜色映射范围会自动匹配所有分箱的聚合后结果,如果部分分箱的聚合后颜色值和画布背景对比度极低,就会产生“分箱消失、形状改变”的视觉错觉。
验证方案

你可以在第二次调用hexbin时显式指定颜色映射范围和高对比度配色,即可看到和第一张图位置完全一致的分箱:

res = ax.hexbin(y2-y1, x1, C=x1, mincnt=1, extent=[-8,8,0,3000], gridsize=150, vmin=x1.min(), vmax=x1.max(), cmap='viridis')

如果需要自定义C参数的聚合逻辑,也可以通过reduce_C_function参数传入自定义函数,比如传入reduce_C_function=np.sum就会对每个分箱的C值求和作为颜色值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:27:01