我有一个数据框,按值按升序排序。它看起来像这样。
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()
因此,标签似乎已从数据框的顶部到底部填充,但条形的长度从底部到顶部填充。这是应该如何或我做错了什么?有关如何使这更容易的任何指示?
编辑我创建了一个iPython笔记本,以演示重现问题的完整代码的问题。 http://nbviewer.ipython.org/gist/blackfist/dd0941f3ddbbc0f724a1
答案 0 :(得分:1)
尝试拨打
section_names_df.reset_index(inplace=True)
在绘图之前。问题是数据帧是按索引的顺序迭代的,因此需要重置它以匹配排序的顺序。
答案 1 :(得分:1)
对于问题的第一部分,以相反的顺序绘制条形图,在绘图之前使用此代码反转DataFrame:
df = df.iloc[::-1]