柱状图

在生成线性图的代码中加上kind=’bar’(垂直柱状图)或kind=’barh’(水平柱状图)即可生成柱状图。这时,Series和DataFrame的索引将会被用作X(bar)或Y(barh)刻度:

In [126]: fig,axes=plt.subplots(2,1)

In [127]: data=Series(np.random.randn(16),index=list('abcdefghigklmnop'))

垂直柱状图:kind=’bar’

In [129]: data.plot(kind='bar',ax=axes[0],color='r',alpha=0.7)

水平柱状图:kind=’barh’

In [136]: data.plot(kind='barh',ax=axes[1],color='g',alpha=0.7)

对于DataFrame,柱状图会将每一行的值分为一组:

In[138]:df=DataFrame(np.random.randn(6,4),index=['one','two','three','four','five','six'],columns=pd.Index(['A','B','C','D'],name='Genus'))

In [139]: df

Out[139]:

Genus A B C D

one -1.131144 -2.147343 0.975843 0.762770

two -0.569839 -1.629557 -0.813020 -0.489566

three -0.229147 -1.091576 0.129447 0.466700

four 0.471413 1.927675 -1.590977 -1.916996

five 0.144965 0.153000 0.806393 2.612267

six 2.077844 -1.438091 0.739377 -0.237273

In [140]: df.plot(kind='bar')

注意:DataFrame各列的名称“Genus”被用作了图例的标题。设置stacked=True即可为DataFrame生成堆积柱状图,这样每行的值就会被堆积在一起:

堆积柱状图:stacked=True

In [141]: df.plot(kind='barh',stacked=True,alpha=0.5)

注意:柱状图有一个非常不错的用法:利用value_counts图形化显示Series中各值的出现频率,比如s.value_counts().plot(kind=’bar’)。