弑天下
您可以使用第一列df.T,然后创建一个类似于条形图的 pandas 线图。下面的代码首先创建一个与问题中的数据类似的玩具数据框,以绘制条形图和对齐线图。两个情节的图例可以通过 组合get_legend_handles_labels()。请注意,pandas 绘图函数不返回绘图,而是ax返回创建绘图的 matplotlib。import matplotlib.pyplot as pltimport numpy as npimport pandas as pdN = 5df = pd.DataFrame([np.random.randint(5000, 7000, N), np.random.randint(1200, 1400, N), np.random.randint(500, 700, N), np.random.randint(900, 1500, N), np.random.randint(1100, 1400, N), np.random.randint(1700, 2300, N)], columns=['2019 Q1', '2019 Q2', '2019 Q3', '2019 Q4', '2020 Q1'], index=['aaa', 'bbb', 'ccc', 'ddd', 'eee', 'fff'])df['2020 Q1'] *= 0.6df1 = df.iloc[1:]ax1 = df1.T.plot(kind='bar', stacked=True, rot=0)ax2 = ax1.twinx()df.T['aaa'].plot(kind='line', color='navy', marker='*', ls='-', ax=ax2)ax2.set_ylim(ymin=0)h1, l1 = ax1.get_legend_handles_labels()h2, l2 = ax2.get_legend_handles_labels()ax1.legend(h2 + h1, l2 + l1)plt.tight_layout()plt.show()