熊猫subplot使用两个系列

时间:2017-04-14 12:57:23

标签: python pandas

我有两个系列',它包含相同的数据,但它们包含不同数量的此数据。我想通过制作条形图来比较这两个系列,两者进行比较。以下是我到目前为止所做的工作。

import matplotlib.patches as mpatches

fig = plt.figure()

ax = fig.add_subplot(111)

width = 0.3

tree_amount15.plot(kind='bar', color='red', ax=ax, width=width, position=1, label='NYC')
queens_tree_types.plot(kind='bar', color='blue', ax=ax, width=width, position=0, label='Queens')
plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
       ncol=2, mode="expand", borderaxespad=0.)

ax.set_ylabel('Total trees')
ax.set_xlabel('Tree names')

plt.show()

这给了我以下图表:

enter image description here

我遇到的问题是,即使每个系列中的所有“树名”都相同,“总树”当然也是不同的,例如,#5(Callery pear)只有#5 in 'tree_amount15','queens_tree_types'中的#3,依此类推。如何订购系列,使其与图表上显示的正确标签对应?因为现在,系列中的标签首先被添加,如图所示,这使得第二个系列的值具有误导性。

任何提示?

这是两个系列的外观,当我执行value_counts()时。

tree_amount15:

London planetree     87014
honeylocust          64264
Callery pear         58931
pin oak              53185
Norway maple         34189
littleleaf linden    29742
cherry               29279
Japanese zelkova     29258
ginkgo               21024
Sophora              19338
red maple            17246
green ash            16251
American linden      13530
silver maple         12277
sweetgum             10657
northern red oak      8400
silver linden         7995
American elm          7975
maple                 7080
purple-leaf plum      6879

queens_tree_types:

London planetree     31111
pin oak              22610
honeylocust          20290
Norway maple         19407
Callery pear         16547
cherry               13497
littleleaf linden    11902
Japanese zelkova      8987
green ash             7389
silver maple          6116
ginkgo                5971
Sophora               5386
red maple             4935
American linden       4769
silver linden         4146
purple-leaf plum      3035
maple                 2992
northern red oak      2697
sweetgum              2489
American elm          1709

1 个答案:

答案 0 :(得分:2)

您可以从使用树名索引的两个系列中创建数据框。默认情况下,pandas会按字母顺序对索引进行排序,因此我们告诉它使用NYC的值进行排序。将这两个系列作为列,我们可以使用plot方法的单个调用将它们放在同一个图表上。

df = pd.concat([tree_amount15, queens_tree_types], axis=1).rename_axis(
          {0:'NYC', 1:'Queens'}, axis='columns') # sets the column names

df.sort_values('NYC', ascending=False)           # sort the df using NYC values

df.plot.bar(color=['red','blue'])