切片图

时间:2016-08-01 08:48:12

标签: python indexing graph slice

我在python中创建了一个图形但是我现在需要使用图形的一部分并使用一小部分原始数据来扩展它,但我不知道如何找到结果的行数形成范围或如何使用这些结果形成文件来创建图形。这是我对图表的代码:

import numpy as np
import matplotlib.pyplot as plt

#variable for data to plot
spec_to_plot = "SN2012fr_20121129.42_wifes_BR.dat"

#tells python where to look for the file
spec_directory = '/home/fh1u16/Documents/spectra/' 
data = np.loadtxt(spec_directory + spec_to_plot, dtype=np.float)

x = data[:,0]
y = data[:,1]

plt.plot(x, y)
plt.xlabel("Wavelength")
plt.ylabel("Flux")
plt.title(spec_to_plot)
plt.show()

编辑:第一列中的数据介于3.5e + 3和9.9e + 3之间,我只需要使用5.5e + 3和6e + 3之间的数据来绘制另一个图形,但这仅适用于第一列柱。希望这更有意义吗? Python版本2.7

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你可以这样做:

my_slice = slice(np.argwhere(x>5.5e3)[0], np.argwhere(x>6e3)[0])
x = data[my_slice,0]
y = data[my_slice,1]

np.argwhere(x>5.5e3)[0]是第一次出现x>5.5e3的索引,并且在切片结束时是明智的。 (假设您的数据已排序)

即使您的数据未排序,也可以采用更通用的方式:

mask = (x>5.5e3) & (x<6e3)
x = data[mask, 0]
y = data[mask, 1]

答案 1 :(得分:0)

使用

解决
plt.axis([5500, 6000, 0, 8e-15])

感谢您的帮助。