이것은 Matplotlib의 가장 큰 좌절감 중 하나입니다. 저는 래스터 데이터로 작업합니다. 예를 들어 컬러 맵, 범례 및 일부 제목을 추가하고 싶습니다. 그렇게하는 matplotlib 갤러리의 단순한 예제는 다른 해상도와 따라서 리샘플링 된 데이터가 될 것입니다. 특히 이미지 분석을 할 때 원하지 않는 재 샘플링을 원하지 않습니다.
내가 더 쉽게 또는 더 좋은 방법이 있는지 알고 싶지만, 여기에 내가 보통하는 일이 있습니다. 그 전체 도면에 걸쳐 그래서 직접 축 위치를 정의
import matplotlib.pyplot as plt
import urllib2
# load the image
img = plt.imread(urllib2.urlopen('http://upload.wikimedia.org/wikipedia/en/thumb/5/56/Matplotlib_logo.svg/500px-Matplotlib_logo.svg.png'))
# get the dimensions
ypixels, xpixels, bands = img.shape
# get the size in inches
dpi = 72.
xinch = xpixels/dpi
yinch = ypixels/dpi
# plot and save in the same size as the original
fig = plt.figure(figsize=(xinch,yinch))
ax = plt.axes([0., 0., 1., 1.], frameon=False, xticks=[],yticks=[])
ax.imshow(img, interpolation='none')
plt.savefig('D:\\mpl_logo.png', dpi=dpi, transparent=True)
참고 :
그림을로드하고 동일한 해상도를 그대로 그냥 출력으로 시작하자. 당신이 레이블 또는 colorbars 등
이 예를 들어 수 있도록 이미지 주위에 약간의 여백을 추가 할 수 있습니다 위와 같이 유사한 방법으로
는 제목을 플로팅에 사용되는 이미지, 위의 20 %의 마진을 추가합니다 :
fig = plt.figure(figsize=(xinch,yinch/.8))
ax = plt.axes([0., 0., 1., .8], frameon=False, xticks=[],yticks=[])
ax.imshow(img, interpolation='none')
ax.set_title('Matplotlib is fun!', size=16, weight='bold')
plt.savefig('D:\\mpl_logo_with_title.png', dpi=dpi)
그림 y 크기 (높이)가 증가하고 y 축 크기가 동일하게 감소합니다. 이렇게하면 더 큰 (전반적인) 출력 이미지를 얻을 수 있지만 축 영역은 여전히 같은 크기가됩니다.
진정한 1-on-x 출력을 강제 실행하려면 .set_scale()과 같은 figure 또는 axes 속성을 사용하는 것이 좋습니다.
'gridspec'을 사용하면 원하는 내용을 제어 할 수 있습니다 (마지막 3 개의 예제 참조) (http://matplotlib.org/examples/pylab_examples/demo_tight_layout.html). 문제를 일으키는 다른 축 설명을 보여주는 몇 가지 예제를 추가 할 수 있습니까? – Bonlenfum
이것은 MPL이 무엇을 그려야하는지에 대한 설명을 분리하고 _how_를 그리는 데 드는 비용입니다. 이 작업을 수작업으로하고, 'tight_layout'을 신중하게 피하는 것이 가장 좋은 방법입니다. – tacaswell