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

如何将matplotlib散点图坐标轴单位从10e9改为10e6且双轴刻度一致

解决代码

import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.ticker import FuncFormatter

# 数据处理逻辑保持原有逻辑不变
mtcars = pd.read_csv('https://gist.githubusercontent.com/seankross/a412dfbd88b3db70b74b/raw/5f23f993cd87c283ce766e7ac6b329ee7cc2e1d1/mtcars.csv')
mtcars['qsec'] = mtcars['qsec']*100000000
mtcars['wt'] = mtcars['wt'] *100000000

# 自定义百万单位刻度格式化函数
def million_unit(x, pos):
    return f"{x/1e6:.1f}"

plt.scatter(x=mtcars['qsec'], y=mtcars['wt'])
ax = plt.gca()

# 同时给x、y轴应用相同的格式化规则
ax.xaxis.set_major_formatter(FuncFormatter(million_unit))
ax.yaxis.set_major_formatter(FuncFormatter(million_unit))

# 强制双轴刻度完全一致
value_max = max(mtcars['qsec'].max(), mtcars['wt'].max())
value_min = min(mtcars['qsec'].min(), mtcars['wt'].min())
plt.xlim(value_min, value_max)
plt.ylim(value_min, value_max)
plt.axis('equal')

# 可选配置:补充单位说明
plt.xlabel('qsec(百万单位)')
plt.ylabel('wt(百万单位)')

plt.show()

常见遗漏操作点

  • 只配置了单轴的刻度缩放规则,没有同时对x、y轴应用同一个格式化逻辑
  • 未手动统一双轴的取值范围,matplotlib默认会根据两个字段的数值分布自动适配不同的刻度区间
  • 未开启等比例显示,就算取值范围一致,画布默认比例也会导致刻度视觉间距不同

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:05