[英]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找到解决此简单任务的解决方案。
如果数据不是很大,则可能更容易阅读所有数据,然后只需从数据中选择所需的索引即可:
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应该保持原样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.