Matplotlib выравнивает позиции галочки с границами пикселей изображения - PullRequest
0 голосов
/ 07 августа 2020

Я генерирую изображения с помощью numpy, используя matplotlib для визуализации областей, которые мне небезразличны, а затем использую pillow, чтобы сохранить их как PNG. Когда я рисую изображения, деления и метки центрируются на пикселях, а не на границах пикселей:

enter image description here

Is there a way I could left/top justify the ticks and labels? I've found info on moving the labels, but not the ticks.

I have also tried using the axis interface with ax.major_ticklabels.set_ha("left") and ax.major_ticklabels.set_va("top") as documented здесь , но не могу заставить его работать. Я ожидал, что 0 будет прямо на краю, а 1 прямо посередине, но я не мог добиться такого поведения.

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()

1 Ответ

0 голосов
/ 07 августа 2020

Вот решение:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...