Matplotlib图表Y轴设置:如何按1000万英镑增量配置
问题解答
是的,你需要手动指定Y轴的刻度值和对应标签——因为pandas默认会根据数据范围自动生成刻度,无法直接匹配你需要的「1000万英镑为增量」的要求。
解决方案步骤
- 获取绘图轴对象:先把pandas绘图返回的轴对象保存下来,方便后续修改Y轴设置
- 计算刻度范围:根据销售额数据的最大值,生成以1000万为步长的刻度数组
- 设置刻度与标签:把生成的刻度应用到Y轴,并设置易读的单位标签(比如「X万」或「XM」)
修改后的完整代码
import matplotlib.pyplot as plt import numpy as np # 保存轴对象,方便后续调整Y轴 ax = df_total_gross_sales.set_index('Date').plot.bar() # 原有的标题、轴标签设置 plt.title('Gross Sales: Discounted Vs Full Price', pad=10, fontsize=16) plt.ylabel("Gross Sales (£)", labelpad=10, fontsize=14) plt.xlabel("Year-Month", labelpad=20, fontsize=14) # 计算Y轴刻度:以1000万英镑为增量 # 先获取所有销售额列的最大值,确保刻度覆盖全部数据 max_sales = df_total_gross_sales.iloc[:, 1:].max().max() # 生成从0开始,步长10000000(1000万)的刻度数组 yticks = np.arange(0, max_sales + 10000000, 10000000) # 应用刻度到Y轴 ax.set_yticks(yticks) # 设置刻度标签,显示为「X百万」格式(可根据需求调整) ax.set_yticklabels([f'{tick // 1000000}万' for tick in yticks]) # 原有的布局与图例设置 plt.tight_layout() plt.legend(facecolor='white', fontsize=13, framealpha=1) plt.show()
补充说明
- 如果你的销售额数据已经是「百万英镑」量级(比如6代表600万英镑),只需把刻度步长改成10(对应1000万英镑),标签改成
f'{tick}M'即可 - 手动设置刻度是实现自定义轴刻度的标准方式,也是Matplotlib/pandas绘图中常见的需求调整操作
内容的提问来源于stack exchange,提问作者Conor
相关产品推荐
相关产品推荐

