gpt4 book ai didi

python - 如何在不拉伸(stretch)图像的情况下更改 matplotlib 中 imshow 的比例?

转载 作者:太空狗 更新时间:2023-10-29 21:32:20 25 4
gpt4 key购买 nike

我想以类似于此处第二个示例的方式使用 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()

如果我将范围修改得更宽,例如:

imshow(z, origin='lower', extent=[-4,4,-1,1])

然后拉伸(stretch)生成的图像。但我只想更改刻度以与我的数据一致。我知道我可以使用 pcolor 来保存 X 和 Y 数据,尽管这会产生其他影响。

我找到了这个允许我手动重做所有刻度的答案:

How do I convert (or scale) axis values and redefine the tick frequency in matplotlib?

但这似乎有点矫枉过正。

有没有办法只改变标签显示的范围?

最佳答案

help(imshow) 将找到 aspect 参数,经过一些实验后似乎可以给出您想要的东西(螺旋的正方形图像,但带有 x从 -4 缩放到 4,y 从 -1 缩放到 1) 像这样使用时:

imshow(z, origin='lower', extent=[-4,4,-1,1], aspect=4)

但是现在你的plot仍然是从-1到1,所以你也必须修改它......

plot(x[:]*4, z[50, :])

我认为当您有多个元素需要修改时,仅使用一行标记重新标记并不过分:

xticks(xticks()[0], [str(t*4) for t in xticks()[0]])

关于python - 如何在不拉伸(stretch)图像的情况下更改 matplotlib 中 imshow 的比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com