python imshow像素大小在p

2024-09-28 05:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

亲爱的stackoverflow社区!在

我需要使用imshow在python中绘制二维地图。使用的命令是

plt.imshow(ux_map, interpolation='none', origin='lower', extent=[lonhg_all.min(), lonhg_all.max(), lathg_all.min(), lathg_all.max()])

然后将图像保存如下

^{pr2}$

看起来像

image2d_problem

问题是,当放大绘图时,可以注意到像素有不同的形状(例如不同的宽度)。这在下面的放大部分中有说明(取自第一张图片的顶部区域):

enter image description here

这种行为有什么原因吗?我为我的数据输入了一个矩形网格,但我想问题与数据本身无关。相反,它可能与渲染有关。我希望所有的像素都是相同的形状,但正如我们所见,它们的宽度和高度都不同。顺便说一下,这也发生在matplotlib的交互绘图中。然而,当放大时,它们突然变得同样的形状。在

我不确定是否 https://github.com/matplotlib/matplotlib/issues/3057/和其中的链接可能相关,但我可以尝试使用dpi值。在任何情况下,如果有人知道为什么会发生这种情况,那么这个人能否提供一些背景资料,说明为什么计算机不能使用上面的命令按预期显示绘图?在

谢谢你的回复!在


Tags: 数据命令绘图宽度matplotlib情况像素all
1条回答
网友
1楼 · 发布于 2024-09-28 05:26:34

这与图像映射到屏幕的方式有关。为了确定屏幕中像素的颜色,从图像中采样相应的颜色。如果屏幕区域和图像大小不匹配,则会发生上采样(图像太小)或下采样(图像太大)。在

你观察到了一个上采样的例子。例如,考虑在屏幕上6x6像素的区域绘制4x4图像。有时两个屏幕像素落在一个图像像素中,有时只有一个。在这里,我们观察到不同大小像素的极端情况。在

Sampling

放大交互式视图时,此效果似乎不起作用。这是因为你突然将图像映射到大量像素。如果一个图像像素被放大到10个屏幕像素,而另一个被放大到11个,你几乎不会注意到区别。当图像接近屏幕分辨率时,效果最明显。在

解决这个问题的方法是使用插值,这可能会导致不需要的模糊外观。为了减少模糊,你可以。。。在

  • 玩不同的插值函数。例如'kaiser'

  • 或使用最近邻插值以常数因子放大图像(例如,将图像中的每个像素替换为具有相同颜色的像素块)。那么任何模糊都只会影响块的边缘。

相关问题 更多 >

    热门问题