正确读取/绘制以“>”分隔的数据

时间:2019-05-14 17:03:30

标签: python numpy matplotlib

我的数据格式如下:

87.2224   -0.0453
87.1561   -0.1580
>
90.8429   -0.1164
90.3849   -0.1020
90.2667   -0.1246
>
87.1002   -0.0553
87.1561   -0.1580
>

其中列是一行的x,y坐标,而每个>分隔新行。

如何使用numpy(或其他Python库)正确读取此内容,并使用matplotlib对其进行绘制,以便可以绘制三行?

或者,在用Python读取数据之前,我可以做一些格式化数据的事情吗?

谢谢! :)

3 个答案:

答案 0 :(得分:1)

下面应该这样做:

x=[]
y=[]
with open("data.txt") as file:

    for line in file:
         if ">" not in line:
              coords = line.split()
              # print(coords)
              x.append(float(coords[0]))
              y.append(float(coords[1]))

答案 1 :(得分:1)

只需将np.loadtxt指定为注释,即可使用>读取数据。这将忽略这些行。您以后可以将这些数组重塑为两位的位/块以绘制单独的线。

import numpy as np

x, y = np.loadtxt('filename.txt', unpack=True, comments='>')

# (array([87.2224, 87.1561, 90.3849, 90.2667, 87.1002, 87.1561]),
#  array([-0.0453, -0.158 , -0.102 , -0.1246, -0.0553, -0.158 ]))

答案 2 :(得分:1)

@pdrersin给了我足够的认识:

x=[]
y=[]
with open("data.txt") as file:

    for line in file:
        if ">" not in line:
            coords = line.split()
            x.append(float(coords[0]))
            y.append(float(coords[1]))
        if ">" in line:
            plt.plot(x,y)
            x=[]
            y=[]

这将单独绘制每条线而不连接其末端。