Почему фигура matplotlib немного преобразуется в массив? - PullRequest
0 голосов
/ 22 февраля 2020

После запуска кода

import time
from matplotlib.patches import Ellipse

fig = plt.figure(frameon=False)
fig.set_size_inches(3,3)
ax = plt.Axes(fig, [0,0,1,1], aspect='equal')
fig.add_axes(ax)
ax.set_axis_off()
circle = Ellipse((0.8,0.8), 0.2,0.05, 30, facecolor='red')
circle.set_clip_box(ax.bbox)
circle.set_alpha(0.7)
ax.add_patch(circle)
plt.show()

я получаю вывод

img1

Однако после запуска следующего блока кода, который записывает изображение в массив и затем отображает массив, используя imshow,

w,h = fig.canvas.get_width_height()
buf = np.frombuffer(fig.canvas.tostring_argb(), dtype=np.uint8).reshape(h,w,4)
buf = np.roll(buf, 3, axis=2)
im=plt.imshow(buf)

Я получаю слегка испорченное изображение

enter image description here

Было бы хорошо, если бы граница выглядела слегка пикселированной, но левый нижний конец эллипса выглядит смещенным относительно реального эллипса. Есть ли причина, по которой это происходит, или способ, которым я могу это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...