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

如何关闭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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:45:44