Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x Matplotlib散点-imshow偏移_Python 3.x_Matplotlib_Scatter_Imshow - Fatal编程技术网

Python 3.x Matplotlib散点-imshow偏移

Python 3.x Matplotlib散点-imshow偏移,python-3.x,matplotlib,scatter,imshow,Python 3.x,Matplotlib,Scatter,Imshow,我在imshow 128 x 128像素上叠加点散点图。如果你仔细看这里: 对象并不总是精确地落在相应像素的中心。我在imshow和origins上尝试了不同的插值,但是没有改变。所以我想我可以覆盖一个网格,看看这个偏移量是多少: 我注意到网格也正好落在对象上,而不是imshow像素的中心。上述绘图的脚本为: fig = plt.figure(figsize=(15,8)) plt.imshow(counts_pre[:,:,slice_z],cmap='viridis',inte

我在imshow 128 x 128像素上叠加点散点图。如果你仔细看这里:

对象并不总是精确地落在相应像素的中心。我在imshow和origins上尝试了不同的插值,但是没有改变。所以我想我可以覆盖一个网格,看看这个偏移量是多少:

我注意到网格也正好落在对象上,而不是imshow像素的中心。上述绘图的脚本为:

   fig = plt.figure(figsize=(15,8))
   plt.imshow(counts_pre[:,:,slice_z],cmap='viridis',interpolation=None)
   plt.scatter(j_index,i_index, s = 0.1, c = 'red', marker = 'o')

   myInterval=1.
   loc = matplotlib.ticker.MultipleLocator(base=myInterval)
   plt.gca().xaxis.set_minor_locator(loc)
   plt.gca().yaxis.set_minor_locator(loc)

   plt.grid(which="both", linewidth=0.72,color="white",alpha=0.1)
   plt.tick_params(which="minor", length=0)

   plt.show()
关于为什么会存在这种偏移以及我如何修复它,有什么想法吗?请注意,栅格不是很均匀,即一些正方形是矩形的

编辑:

  • 升级到最新matplotlib版本无法解决此问题 问题
  • 我创建了条目不为零的对象,这样我知道这些点应该完全对齐,但它们仍然不匹配

  • 您正在运行最新的matplotlib版本吗?当前的默认值似乎是x范围从
    -0.5
    x_size+0.5
    ,整数位置正好位于单元格的中心。我正在运行3.1.2,我看到最新版本是3.3.1,将升级并检查问题是否已解决!这个问题并没有消失。我注意到分辨率越低,问题就越不严重,所以我不知道这样的测试是否有帮助。不过,脚本还是相当快的。10x10不是为了速度,而是为了更好地观察发生了什么。如果您只有较高分辨率的问题,这看起来像是一个别名问题。只有使用
    dpi=…