[PYTHON] matplotlib로 플롯의 구석에 작은 이미지를 삽입하는 방법?
PYTHONmatplotlib로 플롯의 구석에 작은 이미지를 삽입하는 방법?
내가 원하는 것은 정말로 간단합니다. 내 그림의 왼쪽 위 모서리에 표시하려는 "logo.png"라는 작은 이미지 파일이 있습니다. 그러나 matplotlib의 예제 갤러리에서 그 어떤 예도 찾을 수 없습니다.
난 장고를 사용하여, 내 코드는 이런 것입니다
def get_bars(request)
...
fig = Figure(facecolor='#F0F0F0',figsize=(4.6,4))
...
ax1 = fig.add_subplot(111,ylabel="Valeur",xlabel="Code",autoscale_on=True)
ax1.bar(ind,values,width=width, color='#FFCC00',edgecolor='#B33600',linewidth=1)
...
canvas = FigureCanvas(fig)
response = HttpResponse(content_type='image/png')
canvas.print_png(response)
return response
어떤 아이디어? 사전에 thxs
해결법
-
==============================
1.축의 구석이 아닌 실제 그림의 구석에 이미지를 표시하려면 이미지를보십시오.
축의 구석이 아닌 실제 그림의 구석에 이미지를 표시하려면 이미지를보십시오.
아마 이것과 비슷한 것이 있을까요? (PIL을 사용하여 이미지를 읽음) :
import matplotlib.pyplot as plt import Image import numpy as np im = Image.open('/home/jofer/logo.png') height = im.size[1] # We need a float array between 0-1, rather than # a uint8 array between 0-255 im = np.array(im).astype(np.float) / 255 fig = plt.figure() plt.plot(np.arange(10), 4 * np.arange(10)) # With newer (1.0) versions of matplotlib, you can # use the "zorder" kwarg to make the image overlay # the plot, rather than hide behind it... (e.g. zorder=10) fig.figimage(im, 0, fig.bbox.ymax - height) # (Saving with the same dpi as the screen default to # avoid displacing the logo image) fig.savefig('/home/jofer/temp.png', dpi=80) plt.show()
또 다른 옵션으로, 이미지를 너비 / 높이의 고정 된 비율로 사용하려면 "더미"축을 만들어 imshow를 사용하여 이미지를 배치합니다. 이 방법으로 이미지의 크기와 위치는 DPI와 그림의 절대 크기에 독립적입니다.
import matplotlib.pyplot as plt from matplotlib.cbook import get_sample_data im = plt.imread(get_sample_data('grace_hopper.jpg')) fig, ax = plt.subplots() ax.plot(range(10)) # Place the image in the upper-right corner of the figure #-------------------------------------------------------- # We're specifying the position and size in _figure_ coordinates, so the image # will shrink/grow as the figure is resized. Remove "zorder=-1" to place the # image in front of the axes. newax = fig.add_axes([0.8, 0.8, 0.2, 0.2], anchor='NE', zorder=-1) newax.imshow(im) newax.axis('off') plt.show()
from https://stackoverflow.com/questions/3609585/how-to-insert-a-small-image-on-the-corner-of-a-plot-with-matplotlib by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬에서 이중 백 슬래시를 단일 백 슬래시로 바꾸는 방법은 무엇입니까? (0) | 2018.11.23 |
---|---|
[PYTHON] "튜플 목록"을 평면 목록 또는 행렬로 변환합니다. (0) | 2018.11.23 |
[PYTHON] 파이썬 : -u 옵션의 중요성? (0) | 2018.11.23 |
[PYTHON] 파일의 시작 부분에 write ()? (0) | 2018.11.23 |
[PYTHON] 상위 폴더 하위 폴더에서 상대 가져 오기 모듈 (0) | 2018.11.23 |