CanvasAgg 데모 #

이 예제는 그림, 그림 닫기 등을 관리하기 위해 pyplot 인터페이스를 사용하지 않고 코드를 완전히 제어하려는 웹 애플리케이션 개발자가 사용할 수 있는 이미지를 만들기 위해 agg 백엔드를 직접 사용하는 방법을 보여줍니다.

메모

그래픽 프런트 엔드 없이 그림을 만들기 위해 pyplot 인터페이스 사용을 피할 필요는 없습니다. 단순히 백엔드를 "Agg"로 설정하는 것으로 충분합니다.

이 예제에서는 agg 캔버스의 내용을 파일에 저장하는 방법과 이를 Pillow 로 전달할 수 있는 numpy 배열로 추출하는 방법을 보여줍니다 . 후자의 기능을 사용 하면 그림을 디스크에 쓸 필요 없이 cgi 스크립트 내에서 Matplotlib를 사용할 수 있고 Pillow가 지원하는 모든 형식으로 이미지를 쓸 수 있습니다.

from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
import numpy as np
from PIL import Image


fig = Figure(figsize=(5, 4), dpi=100)
# A canvas must be manually attached to the figure (pyplot would automatically
# do it).  This is done by instantiating the canvas with the figure as
# argument.
canvas = FigureCanvasAgg(fig)

# Do some plotting.
ax = fig.add_subplot()
ax.plot([1, 2, 3])

# Option 1: Save the figure to a file; can also be a file-like object (BytesIO,
# etc.).
fig.savefig("test.png")

# Option 2: Retrieve a memoryview on the renderer buffer, and convert it to a
# numpy array.
canvas.draw()
rgba = np.asarray(canvas.buffer_rgba())
# ... and pass it to PIL.
im = Image.fromarray(rgba)
# This image can then be saved to any format supported by Pillow, e.g.:
im.save("test.bmp")

# Uncomment this line to display the image using ImageMagick's `display` tool.
# im.show()

Sphinx-Gallery에서 생성한 갤러리