我想创建一个包含在 Pandas 数据框中的两个系列(比如“A”和“B”)的条形图。如果我只想使用 不同的 y 轴 绘制它们,我可以使用 secondary_y :

df = pd.DataFrame(np.random.uniform(size=10).reshape(5,2),columns=['A','B'])
df['A'] = df['A'] * 100
df.plot(secondary_y=['A'])

但是如果我想创建条形图,等效命令 将被忽略 (它不会在 y 轴上放置不同的比例),因此来自“A”的条形如此之大以至于来自“B”的条形不能区分:
df.plot(kind='bar',secondary_y=['A'])

我怎样才能直接在 Pandas 中做到这一点?或者你会如何创建这样的图表?

我正在使用 Pandas 0.10.1 和 matplotlib 版本 1.2.1。

最佳答案

不要认为 Pandas 图形支持这一点。做了一些手动 matplotlib 代码..你可以进一步调整它

import pylab as pl
fig = pl.figure()
ax1 = pl.subplot(111,ylabel='A')
#ax2 = gcf().add_axes(ax1.get_position(), sharex=ax1, frameon=False, ylabel='axes2')
ax2 =ax1.twinx()
ax2.set_ylabel('B')
ax1.bar(df.index,df.A.values, width =0.4, color ='g', align = 'center')
ax2.bar(df.index,df.B.values, width = 0.4, color='r', align = 'edge')
ax1.legend(['A'], loc = 'upper left')
ax2.legend(['B'], loc = 'upper right')
fig.show()

我相信有办法强制单杠进一步调整它。将条分开得更远,一个稍微透明等

关于python - 如何从数据框中使用secondary_y创建条形图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16524675/

10-13 07:21