1 回答

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用第一列df.T,然后創(chuàng)建一個(gè)類似于條形圖的 pandas 線圖。下面的代碼首先創(chuàng)建一個(gè)與問題中的數(shù)據(jù)類似的玩具數(shù)據(jù)框,以繪制條形圖和對齊線圖。兩個(gè)情節(jié)的圖例可以通過 組合get_legend_handles_labels()。請注意,pandas 繪圖函數(shù)不返回繪圖,而是ax返回創(chuàng)建繪圖的 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()
添加回答
舉報(bào)