확실한 대답은 "귀하의 컬러 바를 별도로 표시"입니다. 첫 번째 그림이 왜곡되지 않도록 새 그림 창을 만들고 여기에 색상 막대를 그려야합니다. 작은 예 :
import matplotlib.pyplot as plt
import numpy as np # only for dummy data
X,Y = np.mgrid[-2:3,-2:3]
Z = np.random.rand(*X.shape)
FIGSIZE = (2,3)
plt.figure(figsize=FIGSIZE)
mpb = plt.pcolormesh(X,Y,Z,cmap='viridis')
# plot the original without a colorbar
plt.savefig('plot_nocbar.png')
# plot a colorbar into the original to see distortion
plt.colorbar()
plt.savefig('plot_withcbar.png')
# draw a new figure and replot the colorbar there
fig,ax = plt.subplots(figsize=FIGSIZE)
plt.colorbar(mpb,ax=ax)
ax.remove()
plt.savefig('plot_onlycbar.png')
# save the same figure with some approximate autocropping
plt.savefig('plot_onlycbar_tight.png',bbox_inches='tight')
이 생성 된 다음 네 가지 수치를 고려 (제대로 보려면 클릭) :
첫 번째는를 호출하지 않고 그림의 저장된 버전입니다 colormap
. 이것은 괜찮습니다. 이것은 여러분이 보존하기를 원하는 것입니다. 두 번째 그림은 colorbar
으로 전화를 걸면 어떤 일이 발생하는지 보여줍니다. 원본 그림에서 약간의 공간이 필요하므로이를 방지해야합니다.
원래 그림 크기 인 plt.subplots
을 사용하여 새 그림 (및 축)을 열어야합니다. 이렇게하면 생성 된 색상 막대가 원본 그림에서 그려진 것과 같은 크기가 될 수 있습니다. 위의 설정에서 나는 matplotlib
이 컬러 바 자체의 크기를 결정하도록했습니다; 그러나 그 후에는 결과 플롯을 오염시킬 보조 축을 삭제해야합니다. (다른 옵션은 새로운 그림에서 컬러 바의 예상 크기로 수동으로 하나의 축을 만드는 것입니다. 이것은 실현 가능한 과정이 아닌 것으로 생각됩니다.)
이제 세 번째 플롯에서 삭제 된 축 뒤에 남은 빈 공간은 결과 플롯에서 명확하게 볼 수 있습니다 (그러나 색상 막대의 크기는 그에 따라 적절합니다). 포스트 프로덕션에서이 공백을 수동으로 잘라내거나 컬러 바 이미지를 자동 자르기하는 것을 사용할 수 있습니다.
matplotlib 자체가 그림의 대부분을 자르기하는 플롯 버전도 포함되었습니다. bbox_inches='tight'
키워드 인수는 savefig
으로 정확히 이루어집니다. 단점은 결과 이미지 파일에 네 번째 이미지에서 볼 수 있듯이 색상 막대 만 포함되어 있지만 결과 색상 막대의 크기가 원본과 약간 다를 수 있습니다. 특정 요구에 따라 가장 편리한 솔루션을 찾기 위해 사용 가능한 방법을 시험해야합니다.
굉장! 고맙습니다! 마지막 예를 사용했습니다. 내가 이해할 수없는 유일한 이유는 dpi와 figsize를 설정하면 예상치 못한 크기의 결과 이미지가 생깁니다 (그림 크기 = (3,8) 및 dpi = 80로 설정했지만 결과 플롯은 240x640 픽셀 대신 144x660 픽셀 임) – AntonK
@AntonK 'figure()'에 대한 호출에서'dpi = 80'을 설정하면 화면의 출력에만 영향을줍니다. 출력 파일에서 예상 dpi를 얻으려면'plt.savefig ("filename.png", dpi = 80)'을 호출 할 때'dpi = 80'을 설정해야합니다. (기본값은 100입니다.) 또한'bbox_inches = 'tight'을 사용하면 무화과 크기가 바뀌므로 출력 이미지 크기가 예측할 수 없게됩니다. 특정 출력 크기가 필요하다면,'bbox_inches = 'tight'을 호출해서는 안됩니다. – ImportanceOfBeingErnest
@ImportanceOfBeingErnest 입력 해 주셔서 감사 드리며, 나는'dpi' 설정에 대해 거의 익숙하지 않습니다. colorbar에 관해서는, 나는이 크기 조정이 OP를 위해 OK 일 것이라고 믿습니다. 문제는 그 자체가 주어진 크기이고, 그 다음에 별도의 컬러 막대가 그 옆에 놓일 수 있다는 것입니다. 그렇지 않으면 질문이 이해가 안되는 것처럼 보입니다. , 적어도 나에게).이 경우 중요한 것은 생성 된 색상 막대가 그림에 대해 그려지는 것과 일치한다는 것입니다. 따라서 같은 크기의 그림부터 시작하는 것이 좋습니다 (그러나 실제로는 자동 크기 세트로 자릅니다. 컬러 바). –