2016-08-01 81 views
-1

我已經在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和9.9E之間+ 3 + 3,我需要5.5E + 3和6e之間只使用數據+3來繪製另一個圖表,但這僅適用於第一列。希望這樣做更有意義? Python版本2.7

+0

這是很不清楚的,但我敢打賭你點擊圖形窗口中的放大鏡圖標,並選擇你想要的部分將做你正在做的事情。 – Julien

+0

什麼不清楚?我如何使它更清晰? –

+0

如果你不解釋你的問題,我們不知道什麼切片與你有關...... – Julien

回答

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] 
+0

剛剛嘗試過這種錯誤,「x和y必須具有相同的第一維」出現了嗎? –

+0

您需要將相同的切片應用於'y',請參閱我的編輯。 – Julien

+0

不要在評論中放置這樣的代碼,它不可讀,更喜歡編輯你的帖子......不要使用'和'但是'&',它們有不同的含義。 – Julien

0

使用

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

感謝您的幫助解決。