如何使用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
相关产品推荐
相关产品推荐

