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]]
,在这里,您可以按照所需的顺序使用列表索引。您还可以看看我的后续问题吗?