首页 > 解决方案 > Matplotlib 将刻度位置与图像像素边界对齐

问题描述

我正在numpy使用 生成图像,matplotlib用于可视化我关心的区域,然后使用pillow将它们保存为 PNG。当我绘制图像时,刻度线和标签以像素而不是像素边界为中心:

在此处输入图像描述

有没有办法我可以左/上证明刻度和标签?我找到了有关移动标签的信息,但没有找到刻度。

我也尝试过将轴接口与此处记录的ax.major_ticklabels.set_ha("left")和一起使用,但无法使其正常工作。我希望处于边缘和中间,但我无法获得这种行为。ax.major_ticklabels.set_va("top")01

import matplotlib.pyplot as plt
from PIL import Image
import numpy as np

image_size = (2, 2)
data = np.zeros(image_size)
data[0][0] = 255
data[1][1] = 255
plt.xticks([0, 1])
plt.yticks([0, 1])
plt.imshow(Image.fromarray(data).convert("L"))
plt.show()

标签: pythonmatplotlib

解决方案


这是解决方案:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

image_size = (2, 2)
data = np.zeros(image_size)
data[0][0] = 255
data[1][1] = 255
x= [0,.5]
y= [0,.5]
labels = (0,1)
plt.xticks(x, labels)
plt.yticks(y, labels)
plt.imshow(Image.fromarray(data).convert("L"),extent = [0, 1,0 ,1])
plt.show()

推荐阅读