如何关闭pandas.plotting.scatter_matrix的科学计数法显示
解决pandas散点矩阵(scatter_matrix)科学计数法无效的问题
问题场景:使用pd.plotting.scatter_matrix生成散点矩阵时,plt.ticklabel_format(style='plain', axis='y')无法关闭科学计数法,图表中的1e9类标注破坏视觉效果。
解决方法
方法1:遍历所有子图坐标轴,逐个关闭科学计数法
scatter_matrix会生成多张子图,plt.ticklabel_format仅作用于当前活跃子图,因此需要遍历所有子图的x、y轴统一设置:
import matplotlib.pyplot as plt import pandas as pd plt.figure(figsize=(16,16)) # 生成散点矩阵并获取子图对象集合 axes = pd.plotting.scatter_matrix(Df, hist_kwds={'bins': 50}, alpha=0.5, s=10, diagonal='kde') # 遍历每个子图,关闭x、y轴的科学计数法 for ax_row in axes: for ax in ax_row: ax.ticklabel_format(style='plain', axis='both') plt.show()
方法2:通过hist_kwds传递格式化参数给直方图
如果科学计数法主要出现在对角线的直方图上,可直接在hist_kwds中添加坐标轴格式化配置:
plt.figure(figsize=(16,16)) pd.plotting.scatter_matrix( Df, hist_kwds={'bins': 50, 'ticklabel_format': {'style': 'plain', 'axis': 'both'}}, alpha=0.5, s=10, diagonal='kde' ) plt.show()
补充说明
plt.ticklabel_format默认仅对当前单个Axes对象生效,而scatter_matrix一次性创建了多张子图,因此必须逐个对每个子图的坐标轴进行设置,才能实现全局关闭科学计数法的效果。
内容的提问来源于stack exchange,提问作者AGator
相关产品推荐
相关产品推荐

