等价于Pandas / Matplotlib中barh的secondary_y?

时间:2018-08-23 21:31:24

标签: pandas bar-chart

Pandas提供了nice, simple way来在两个y轴上绘制(垂直)条形图。水平条形图是否等效?

要适应链接的示例:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from io import StringIO
s = StringIO("""     amount     price
A     40929   4066443
B     93904   9611272
C    188349  19360005
D    248438  24335536
E    205622  18888604
F    140173  12580900
G     76243   6751731
H     36859   3418329
I     29304   2758928
J     39768   3201269
K     30350   2867059""")
df = pd.read_csv(s, index_col=0, delimiter=' ', skipinitialspace=True)

_ = df.plot( kind= 'barh' , secondary_y= 'amount' , rot= 0 ) 
# Doesn't work as expected. And there's no secondary_x.

plt.show()

1 个答案:

答案 0 :(得分:1)

与您的要求不太相同:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from io import StringIO
s = StringIO("""     amount     price
A     40929   4066443
B     93904   9611272
C    188349  19360005
D    248438  24335536
E    205622  18888604
F    140173  12580900
G     76243   6751731
H     36859   3418329
I     29304   2758928
J     39768   3201269
K     30350   2867059""")
df = pd.read_csv(s, index_col=0, delimiter=' ', skipinitialspace=True)

ax = df['price'].plot.barh(color='blue', alpha=.5) 
ax2 = ax.twiny()
df['amount'].plot.barh(ax=ax2, color='yellow', alpha =.5 )
plt.show()

输出:

enter image description here