2012-09-14 55 views
2

我想要显示图像的振幅谱。我能够使用以下代码执行此操作:matplotlib imshow编辑x轴

import numpy as np 
import matplotlib.pyplot as plt 
import pylab 

pylab.gray() 
pic = pylab.imread("C:/pic.png")[::-1,:] 
amp_pic = pylab.subplot(1,4,1) 
amp_pic.xaxis.set_ticks_position('top') 
pylab.imshow(np.abs(np.fft.fftshift(np.fft.fft2(pic))),\ 
     interpolation='nearest') 
pylab.show() 

但是轴没有标记振幅谱应标记的方式。在1D-功能的情况下,重新标记是比较容易:

import math 
import numpy as np 
import matplotlib.pyplot as plt 

array = np.arange(149) 
frequency_scale = np.fft.fftfreq(array.shape[0]) 
function = np.cos(2*math.pi*array/10) 
fft = np.fft.fft(function) 
amp_fft = np.abs(fft) 
plt.subplot(1,4,1) 
plt.plot(fkt,'r') 
plt.show() 

我要为我的imshow情节的情况下,X轴相同的标签。这可能吗?

+0

也许有人会给一个例子的完整答案,但你需要做的是使用'范围'关键字参数imshow。 – seberg

回答

4
figure() 
im = imshow(rand(500,500)) 
im.set_extent([0,1,0,1]) 

set_extent的x和y轴的最大和最小设置。 Doc如下:

| set_extent(self, extent) 
|  extent is data axes (left, right, bottom, top) for making image plots 
|  
|  This updates ax.dataLim, and, if autoscaling, sets viewLim 
|  to tightly fit the image, regardless of dataLim. Autoscaling 
|  state is not changed, so following this with ax.autoscale_view 
|  will redo the autoscaling in accord with dataLim. 
+0

解决方案工作。 – kiltek