Numpy 如何使用matplotlib控制条形图中的记录顺序?

Numpy 如何使用matplotlib控制条形图中的记录顺序?,numpy,matplotlib,record,Numpy,Matplotlib,Record,我有一个数据文件,它由几个数据点组成,我想按特定顺序绘制。以下是示例数据文件: cop 94.0528 313 441 cpr 225.172 726 747 ent 444.786 926 939 fsh 256.038 743 754 fsp 43.7764 340 356 pbp 343.708 825 834 rho 426.497 858 886 sca 3

我有一个数据文件,它由几个数据点组成,我想按特定顺序绘制。以下是示例数据文件:

cop   94.0528    313     441
cpr   225.172    726     747
ent   444.786    926     939
fsh   256.038    743     754
fsp   43.7764    340     356
pbp   343.708    825     834
rho   426.497    858     886
sca   342.431    427     872
目前,我正在以我所树立的榜样的方式,将它们绘制在彼此的正下方。 如何将python脚本中这些数据记录的顺序更改为指定的顺序?我已经试着把它做成一个数组。所以我会这么做

data=Numpy.genfromtxt(txt)
transformdata.append(2) # cpr to the first slot
transformdata.append(1) # cop to the second slot
outputarray.append(data[transformdata(1)]
outputarray.append(data[transformdata(2)]
pos = range(1,size(outputarray))
scatter(outputarray, pos)    

然而,这是混乱的,当然不是实现这一点的最佳方式。如何使用Numpy或Matplotlib库实现这一点?

假设
transformdata
ndarray
,就像
data
,您可以使用索引技巧获取数组视图,而无需复制它。例如:

>>> x=np.array(zip("abcdef",range(5),np.random.rand(5)),dtype=[('',"|S1"),('',int),('',float)])
>>> print x
[('a', 0, 0.9818028495949546) ('b', 1, 0.08931155317859962)
 ('c', 2, 0.018796963462246796) ('d', 3, 0.275603618214155)
 ('e', 4, 0.6328806434997251)]
>>> y = x[[1,3,0,2,4]]
>>> print y
[('b', 1, 0.08931155317859962) ('d', 3, 0.275603618214155)
 ('a', 0, 0.9818028495949546) ('c', 2, 0.018796963462246796)
 ('e', 4, 0.6328806434997251)]

这里的关键是
x[[1,3,0,2,4]]
,在这里,您可以按照所需的顺序使用列表索引。

您还可以看看我的后续问题吗?