从.txt文件中跳过特定数据行,以绘制带有断点的2D线

时间:2015-01-06 12:31:50

标签: python numpy matplotlib

我试图仅绘制一个关于其文本文件某些行的图表。

如何在我的py脚本中实现这一目标?

import pylab as py
xa, ya = py.loadtxt('filename1.txt',skiprows=1,usecols=(0,1),unpack=True ) 
xb, yb = py.loadtxt('filename2.txt',skiprows=1,usecols=(0,1),unpack=True )

fig = py.figure(1,figsize=(12,14))

py.semilogy(xa, ya*2, '-', xb, yb*1.5, 'o', linewidth = 0.5) 

我的文本文件有100行(和2列),我想跳过'filename2.txt'的第35:55和65:77行,以便绘制一条中间有间隙的2d行。不幸的是,我无法通过matplotlib为这个简单的任务找到解决方案。

2 个答案:

答案 0 :(得分:0)

如果您的数据不是那么大,可能更容易阅读所有数据,然后只需从您的数据中选择所需的索引:

idx = np.arange(xb.shape[0])   # array([0, 1, 2, 3, 4, 5, 6, ...
mask = (idx < 35) | (idx > 55) | (idx < 65) | (idx > 77)
xb, yb = xb[mask], yb[mask]

答案 1 :(得分:0)

您可以将ya和yb中不需要的数据点设置为np.nan。 Matplot跳过(或者只是没有绘制)这些点。

所以你可以(读完txt文件后):

np.put(ya,range(35,56,1),[np.nan]*(56-35))

等等其他部分。 xa和xb应保持原样。