0

我进行了数值模拟,但我的绘图有问题......我的模拟区域6x35µm的分辨率为640x1024px. 当我想使用 绘制我的模拟数据imshow并设置纵横比aspect=6/35时,那么绘图的高度是正确的,但它太长了?我究竟做错了什么?

在图片里:

top:模拟掩码,所有地块应具有相同的纵横比。

middle:aspect设置为手动设置为模拟蒙版的aspect(6/35)

bottom: 方面设置为 1

在此处输入图像描述

这是我的代码

fig = pl.figure(num=None, figsize=(10, 10))
ax = fig.add_subplot(1,1,1)
img = ax.imshow(data, aspect=6./35)
4

3 回答 3

4

您还需要考虑沿两个轴的分辨率差异。对于您的 y 轴,您有 640 个 6 微米的数据点和 x 轴 1024 个 35 微米的数据点。Matplotlib 假设两者相等。

data = np.random.rand(640,1024)

fig, axs = plt.subplots(2,1, figsize=(10, 4))

aspect = 6 / 35

axs[0].set_title('aspect: %1.2f' % aspect)
axs[0].imshow(data, aspect=aspect, interpolation='none')

aspect = (6/35.) * (1024 / 640)

axs[1].set_title('aspect: %1.2f' % aspect)
axs[1].imshow(data, aspect=aspect, interpolation='none')

在此处输入图像描述

于 2014-04-10T13:18:35.083 回答
0

您需要执行以下操作:

img = ax.imshow(data, aspect = 6/35.)

或者换句话说,使分母浮动。6/35等于零。6/35.不是。

希望有帮助

于 2014-04-10T13:02:43.067 回答
0

我在论坛的其他地方找到了答案... 如何在 matplotlib 中设置纵横比?

def forceAspect(ax,aspect=1):
    im = ax.get_images()
    extent =  im[0].get_extent()
    ax.set_aspect(abs((extent[1]-extent[0])/(extent[3]-extent[2]))/aspect)
于 2014-04-10T13:21:08.047 回答