pandas matplotlib barh bars从下到上打印,但标签从上到下打印

时间:2014-08-30 19:11:10

标签: matplotlib pandas dataframe

我有一个数据框,按值按升序排序。它看起来像这样。

    Name    Count
19  PAGEBGFX    1
18  CODE    1
17  .orpc   2
16  .sdata  3
15  PAGE    4
14  PAGELK  4
13  .data1  4
12  data    6
11  .tls    6
10  text    6
9   .ndata  8
8   minATL  13
7   .imrsiv 41
6   .rdata  209
5   .pdata  501
4   .idata  660
3   .reloc  896
2   .data   930
1   .rsrc   962
0   .text   998

当我使用水平条形图绘制时,条形似乎从底部到顶部填充。所以数据框中的第一行是我图表中的底栏。这是绘图代码。

ypos = np.arange(len(section_names_df)) + .1
plt.barh(ypos, section_names_df['Count'])
plt.yticks(ypos +.4, section_names_df['Name'])
plt.show()

horizontal bar chart

因此,标签似乎已从数据框的顶部到底部填充,但条形的长度从底部到顶部填充。这是应该如何或我做错了什么?有关如何使这更容易的任何指示?

编辑我创建了一个iPython笔记本,以演示重现问题的完整代码的问题。 http://nbviewer.ipython.org/gist/blackfist/dd0941f3ddbbc0f724a1

2 个答案:

答案 0 :(得分:1)

尝试拨打

section_names_df.reset_index(inplace=True)

在绘图之前。问题是数据帧是按索引的顺序迭代的,因此需要重置它以匹配排序的顺序。

答案 1 :(得分:1)

对于问题的第一部分,以相反的顺序绘制条形图,在绘图之前使用此代码反转DataFrame:

df = df.iloc[::-1]