matplotlib分组柱状图与折线图X轴不对齐 折线起始位置偏移如何解决
分组柱状图与折线图X轴不对齐修复方案
问题原因
Pandas 绘制分类柱状图时,会将 X 轴转换为从 0 开始的整数坐标序列,每个整数对应一个分类刻度。直接调用 Series.plot() 方法绘制折线时,默认的索引匹配逻辑和柱状图的整数坐标体系不兼容,加上 pivot 后的分类数据可能存在缺失月份,就会出现折线起始位置偏移的问题。
修复代码
import pandas as pd import matplotlib.pyplot as plt df = pd.read_csv('instagram_category.csv') # 计算月度总销售额 sales = df_total.groupby(['Month']).sum()['Daily Sales'] # 生成分类数据透视表 df = df.pivot(index='Month', columns='Type', values='Count') # 按透视表的月份顺序重排销售额数据,保证两份数据的月份一一对应 sales = sales.reindex(df.index) # 绘制分组柱状图,获取坐标轴对象 ax = df.plot(kind='bar', figsize=(15, 8)) # 手动创建双Y轴 ax2 = ax.twinx() # 指定折线的X坐标为和柱状图完全对齐的整数序列,绘制折线图 ax2.plot(range(len(df)), sales, color='#b15a5e', linewidth=3) # 按需设置折线侧Y轴标签 ax2.set_ylabel('销售额') plt.title('日销售额 X Instagram内容分类') plt.show()
原理说明
手动指定折线图的X轴坐标为range(len(df)),也就是和柱状图每个柱子位置完全对应的整数序列,同时通过reindex方法保证销售额数据的月份顺序和柱状图的月份顺序完全一致,彻底避免索引匹配导致的偏移问题。
内容的提问来源于stack exchange,提问作者OK_TAX
相关产品推荐
相关产品推荐

