我想以类似于第二个例子的方式使用imshow进行绘图http://www.scipy.org/Plotting_Tutorial,但重新定义轴的比例.当我这样做时,我也希望图像保持静止!
示例中的代码:
from scipy import *
from pylab import *
# Creating the grid of coordinates x,y
x,y = ogrid[-1.:1.:.01, -1.:1.:.01]
z = 3*y*(3*x**2-y**2)/4 + .5*cos(6*pi * sqrt(x**2 +y**2) + arctan2(x,y))
hold(True)
# Creating image
imshow(z, origin='lower', extent=[-1,1,-1,1])
xlabel('x')
ylabel('y')
title('A spiral !')
# Adding a line plot slicing the z matrix just for fun.
plot(x[:], z[50, :])
show()
Run Code Online (Sandbox Code Playgroud)
如果我将范围修改为更宽,例如:
imshow(z, origin='lower', extent=[-4,4,-1,1])
Run Code Online (Sandbox Code Playgroud)
然后拉伸得到的图像.但我想做的就是改变刻度以与我的数据一致.我知道我可以使用pcolor来保存X和Y数据,尽管这有其他后果.
我发现这个答案允许我手动重做所有刻度:
如何转换(或缩放)轴值并重新定义matplotlib中的滴答频率?
但这似乎有点矫枉过正.
有没有办法只改变标签显示的范围?
wer*_*ika 11
A help(imshow)会发现这个aspect论点,经过一些实验后似乎给出了你想要的东西(螺旋的正方形图像,但x尺度从-4到4,y从-1到1),如下所示:
imshow(z, origin='lower', extent=[-4,4,-1,1], aspect=4)
Run Code Online (Sandbox Code Playgroud)
但是现在你plot仍然从-1到1,所以你必须修改它...
plot(x[:]*4, z[50, :])
Run Code Online (Sandbox Code Playgroud)
我认为当你有几个必须修改的元素时,只需使用单行刻度重新标记而不是矫枉过正:
xticks(xticks()[0], [str(t*4) for t in xticks()[0]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30272 次 |
| 最近记录: |