跳过 .txt 文件中的特定数据行,以便绘制带中断的二维线

Skip specific data lines from a .txt file in order to plot a 2D line with breaks

我正在尝试绘制一个图表,其中一个图表仅涉及其文本文件的某些行。

如何在我的 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 找到这个简单任务的解决方案。

如果您的数据不是很大,那么阅读所有内容可能会更容易,然后 select 您的数据中所需的索引:

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]

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

所以你可以这样做(阅读 txt 文件后):

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

其他部分依此类推。 xa 和 xb 应该保持原样。