我试图仅绘制一个关于其文本文件某些行的图表。
如何在我的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为这个简单的任务找到解决方案。
答案 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应保持原样。