После запуска кода
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](https://i.stack.imgur.com/qUhc9.png)
Однако после запуска следующего блока кода, который записывает изображение в массив и затем отображает массив, используя 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](https://i.stack.imgur.com/bY9RS.png)
Было бы хорошо, если бы граница выглядела слегка пикселированной, но левый нижний конец эллипса выглядит смещенным относительно реального эллипса. Есть ли причина, по которой это происходит, или способ, которым я могу это исправить?