绘制seaborn热图前设置轴属性时如何旋转坐标轴刻度标签
seaborn热图第二种绘制方案y轴刻度旋转的解决方案
问题原因
你预先在ax[1]上配置的刻度属性会被后续调用的sns.heatmap内部初始化逻辑覆盖,因此提前设置的y轴标签旋转参数不生效。
最优解决方案(无需后续修改,无闪烁)
seaborn v0.11.0及以上版本支持在heatmap接口中直接传入刻度旋转参数,绘制时一次性完成所有配置,完全不会产生闪烁:
sns.heatmap(ax=ax[1], data=A, xticklabels=labels, yticklabels=labels, xtickrotation=45, ytickrotation=45 )
不需要提前调用set_xticks/set_yticks类方法,所有刻度、标签、旋转样式都在绘制热图时同步生成,完全匹配动画嵌入的需求。
兼容老版本seaborn的低闪烁方案
如果你的seaborn版本较低不支持上述旋转参数,可以通过临时隐藏坐标轴的方式修改属性,用户完全感知不到闪烁:
# 隐藏目标坐标轴,修改过程不可见 ax[1].set_visible(False) # 绘制热图 sns.heatmap(ax=ax[1], data=A, xticklabels=labels, yticklabels=labels) # 批量设置刻度属性 plt.setp(ax[1].get_xticklabels(), fontsize=10, rotation=45) plt.setp(ax[1].get_yticklabels(), fontsize=10, rotation=45) # 恢复坐标轴显示 ax[1].set_visible(True) # 刷新画布 fig.canvas.draw()
内容的提问来源于stack exchange,提问作者fishbacp
相关产品推荐
相关产品推荐

