1 回答

TA貢獻1818條經驗 獲得超8個贊
您可以使用第一列df.T,然后創建一個類似于條形圖的 pandas 線圖。下面的代碼首先創建一個與問題中的數據類似的玩具數據框,以繪制條形圖和對齊線圖。兩個情節的圖例可以通過 組合get_legend_handles_labels()。請注意,pandas 繪圖函數不返回繪圖,而是ax返回創建繪圖的 matplotlib。
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
N = 5
df = 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.6
df1 = 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()
添加回答
舉報