2 回答

TA貢獻2021條經(jīng)驗 獲得超8個贊
我認為要走的路是連接數(shù)據(jù)幀并為缺失值附加 nans
import pandas as pd
import matplotlib.pyplot as plt
d1 = {
'index' : [1, 2, 3, 4, 5],
'col1' : [5, 8, 6, 4, 2]
}
d2 = {
'index' : [3, 5],
'col1' : [6, 2]
}
df1 = pd.DataFrame(d1).set_index(["index"])
df2 = pd.DataFrame(d2).set_index(["index"])
plotThis = pd.concat([df1, df2], axis = 1, ignore_index = True)
plotThis.plot(kind = 'barh')

TA貢獻1825條經(jīng)驗 獲得超4個贊
不幸的是,pandas 的barh功能不允許我們?yōu)槊總€條形選擇不同的顏色。但既然情況似乎如此,我會選擇不使用 Pandas 繪圖函數(shù),而是直接使用 matplotlib 的函數(shù)。
在這種情況下,有很多方法可以達到預(yù)期的結(jié)果。這是一種選擇:
fig, ax = plt.subplots()
c = ['C2' if i in df2.index else 'C1' for i in df1.index]
ax.barh(y=df1.index,width=df1.col1,color=c)
ax.grid(False)
df3 = df1.loc[df1.index.difference(df2.index)].append(df2, sort=False).sort_index()
df3.plot(kind='barh', stacked=True, grid=False)
第一行創(chuàng)建一個具有以下內(nèi)容的新數(shù)據(jù)框:
col1 col2
index
1 5.0 NaN
2 8.0 NaN
3 NaN 6.0
4 4.0 NaN
5 NaN 2.0
繪制此數(shù)據(jù)框會產(chǎn)生所需的輸出。
添加回答
舉報