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

如何使用Matplotlib将X轴单位从1e7改为以百万为单位显示

解决Matplotlib X轴以百万为单位展示的问题

有两种简单方法可以实现X轴以百万为单位显示,以下是具体操作:

方法一:直接处理数据(逻辑直观,推荐)

绘图前将Sales列的数值除以100万(1e6),让X轴刻度直接对应百万级数值,同时更新坐标轴标签说明单位:

import pyodbc
import pandas as pd
import matplotlib.pyplot as plt

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=DESKTOP-3JKKF7H;'
                      'Database=AdventureWorks2019;'
                      'Trusted_Connection=yes;')

query = 'SELECT * FROM Regional'
regional = pd.read_sql(query, conn)

# 将销售额转换为百万单位
regional['Sales_Millions'] = regional['Sales'] / 1e6
# 使用转换后的数据绘制水平柱状图
regional.plot.barh(x='Region', y='Sales_Millions')
# 更新X轴标签
plt.xlabel("销售额(百万)")

plt.show()

方法二:使用Matplotlib刻度格式化器(不修改原始数据)

借助matplotlib.ticker工具,在保留原始数据的前提下,仅调整X轴刻度的显示形式:

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

conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=DESKTOP-3JKKF7H;'
                      'Database=AdventureWorks2019;'
                      'Trusted_Connection=yes;')

query = 'SELECT * FROM Regional'
regional = pd.read_sql(query, conn)

regional.plot.barh(x='Region', y='Sales')
plt.xlabel("销售额(百万)")

# 定义格式化函数:将数值转换为百万单位,保留1位小数
def millions_formatter(x, pos):
    return f'{x/1e6:.1f}'

# 将格式化函数应用到X轴
plt.gca().xaxis.set_major_formatter(FuncFormatter(millions_formatter))

plt.show()

补充说明

  • 方法一适合后续分析也需要使用百万单位数据的场景,数据处理更彻底;
  • 方法二更适合需要保留原始数据完整性,仅调整图表展示效果的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:04:56