답변:
그림 은 통화 서명을 알려줍니다.
from matplotlib.pyplot import figure
figure(num=None, figsize=(8, 6), dpi=80, facecolor='w', edgecolor='k')
figure(figsize=(1,1))
다른 dpi 인수를 지정하지 않는 한 인치 단위 이미지를 생성합니다.
show()
을 사용하고 팝업 창을 만들려면 아무것도 플롯 figure(num=1,...)
하기 전에 호출 해야 합니다. pyplot / pylab은 무언가를 그리 자마자 그림을 만들고 팝업 크기가 나타납니다. 이 시점에서 수정해야합니다.
그림을 이미 만든 경우 다음과 같이 빠르게 수행 할 수 있습니다.
fig = matplotlib.pyplot.gcf()
fig.set_size_inches(18.5, 10.5)
fig.savefig('test2png.png', dpi=100)
기존 GUI 창에 크기 변경을 전파하려면 추가 forward=True
fig.set_size_inches(18.5, 10.5, forward=True)
imshow
. 이제 플롯 영역 주변의 공간을 제거한 직후 에이 코드를 사용하고 plt.subplots_adjust(left=0.0, right=1.0, bottom=0.0, top=1.0)
있습니다.
fig.set_dpi(100)
.
중단 노트 :
당으로 공식하기 matplotlib 가이드는 ,의 사용pylab
모듈은 더 이상 권장되지 않습니다. 이 다른 답변에서matplotlib.pyplot
설명한대로 모듈을 대신 사용하십시오 .
다음은 작동하는 것 같습니다.
from pylab import rcParams
rcParams['figure.figsize'] = 5, 10
이것은 그림의 너비를 5 인치로 만들고 높이를 10 인치로 만듭니다.
그런 다음 Figure 클래스는이를 인수 중 하나의 기본값으로 사용합니다.
fig.set_size_inches(18.5, 10.5, forward=True)
일했다.
그림 환경을 사용하지 않고 크기를 변경하려는 경우에도이 해결 방법이 있습니다. 따라서 plt.plot()
예를 들어 사용 하는 경우 너비와 높이로 튜플을 설정할 수 있습니다.
import matplotlib.pyplot as plt
plt.rcParams["figure.figsize"] = (20,3)
인라인을 플로팅 할 때 매우 유용합니다 (예 : IPython Notebook). @asamaier가 주목 한 것처럼이 명령문을 동일한 imports 문의 셀에 넣지 않는 것이 좋습니다.
figsize
당신은 2.54으로 그들을 분할해야 센티미터에서 설정하려는 경우에 좀 그래서 튜플 인치를 받아들이는 이 질문을 .
plt.rcParams["figure.figsize"] = (20,3)
추가 셀 을 호출해야합니다 . import 문과 동일한 셀에서 호출하면 무시됩니다.
다음과 같이 간단한 코드를 사용해보십시오.
from matplotlib import pyplot as plt
plt.figure(figsize=(1,1))
x = [1,2,3]
plt.plot(x, x)
plt.show()
플롯하기 전에 그림 크기를 설정해야합니다.
atplotlib.pyplot.figure
다른 사람들이 명확하게 말하지 않는 m이라는 것을 알려줍니다 . 내가 좋아하는 일을 시도 계속 matplotlib.figure
하고matplotlib.figure.Figure
plt.figure(figsize=(1,1))
crux 움직임입니다. 감사합니다.
Google의 첫 번째 링크 'matplotlib figure size'
는 AdjustingImageSize ( 페이지의 Google 캐시 )입니다.
위 페이지의 테스트 스크립트는 다음과 같습니다. test[1-3].png
동일한 이미지의 크기가 다른 파일을 만듭니다 .
#!/usr/bin/env python
"""
This is a small demo file that helps teach how to adjust figure sizes
for matplotlib
"""
import matplotlib
print "using MPL version:", matplotlib.__version__
matplotlib.use("WXAgg") # do this before pylab so you don'tget the default back end.
import pylab
import numpy as np
# Generate and plot some simple data:
x = np.arange(0, 2*np.pi, 0.1)
y = np.sin(x)
pylab.plot(x,y)
F = pylab.gcf()
# Now check everything with the defaults:
DPI = F.get_dpi()
print "DPI:", DPI
DefaultSize = F.get_size_inches()
print "Default size in Inches", DefaultSize
print "Which should result in a %i x %i Image"%(DPI*DefaultSize[0], DPI*DefaultSize[1])
# the default is 100dpi for savefig:
F.savefig("test1.png")
# this gives me a 797 x 566 pixel image, which is about 100 DPI
# Now make the image twice as big, while keeping the fonts and all the
# same size
F.set_size_inches( (DefaultSize[0]*2, DefaultSize[1]*2) )
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test2.png")
# this results in a 1595x1132 image
# Now make the image twice as big, making all the fonts and lines
# bigger too.
F.set_size_inches( DefaultSize )# resetthe size
Size = F.get_size_inches()
print "Size in Inches", Size
F.savefig("test3.png", dpi = (200)) # change the dpi
# this also results in a 1595x1132 image, but the fonts are larger.
산출:
using MPL version: 0.98.1
DPI: 80
Default size in Inches [ 8. 6.]
Which should result in a 640 x 480 Image
Size in Inches [ 16. 12.]
Size in Inches [ 16. 12.]
두 가지 메모 :
모듈 설명과 실제 출력이 다릅니다.
이 답변을 사용하면 세 이미지를 하나의 이미지 파일로 쉽게 결합하여 크기의 차이를 볼 수 있습니다.
fig = plt.figure() default_size = fig.get_size_inches() fig.set_size_inches( (default_size[0]*2, default_size[1]*2) )
matplotlib.figure.Figure 에서 간단히 사용할 수 있습니다 .
fig.set_size_inches(width,height)
Matplotlib 2.0.0부터는 forward
키워드의 기본값이 다음 과 같이 캔버스 변경 사항이 즉시 표시 됩니다.True
.
너비 나 높이 만 변경하려면 대신 모두를, 당신은 사용할 수 있습니다
fig.set_figwidth(val)
또는 fig.set_figheight(val)
이것도 캔버스를 즉시 업데이트하지만 Matplotlib 2.2.0 이상에서만 가능합니다.
forward=True
위에 지정된 버전보다 오래된 버전에서 캔버스를 실시간 업데이트하려면 명시 적 으로 지정해야합니다 . 점을 유의 set_figwidth
과 set_figheight
기능은 지원하지 않습니다 forward
하기 matplotlib 1.5.0 이전의 버전에서 매개 변수를.
import matplotlib.pyplot as plt
plt.figure(figsize=(20,10))
plt.plot(x,y) ## This is your plot
plt.show()
다음을 사용할 수도 있습니다.
fig, ax = plt.subplots(figsize=(20, 10))
이것은 나를 위해 잘 작동합니다 :
from matplotlib import pyplot as plt
F = plt.gcf()
Size = F.get_size_inches()
F.set_size_inches(Size[0]*2, Size[1]*2, forward=True) # Set forward to True to resize window along with plot in figure.
plt.show() # or plt.imshow(z_array) if using an animation, where z_array is a matrix or numpy array
이것은 또한 도움이 될 수 있습니다 : http://matplotlib.1069221.n5.nabble.com/Resizing-figure-windows-td11424.html
그림의 크기를 N 배로 늘리려면 pl.show () 바로 앞에 이것을 삽입해야합니다.
N = 2
params = pl.gcf()
plSize = params.get_size_inches()
params.set_size_inches( (plSize[0]*N, plSize[1]*N) )
ipython 노트북과도 잘 작동합니다.
Matplotlib 은 기본적으로 미터법을 사용할 수 없으므로 , 그림의 크기를 센티미터와 같은 적당한 길이 단위로 지정하려면 다음을 수행 할 수 있습니다 ( gns-ank의 코드 ).
def cm2inch(*tupl):
inch = 2.54
if isinstance(tupl[0], tuple):
return tuple(i/inch for i in tupl[0])
else:
return tuple(i/inch for i in tupl)
그런 다음 다음을 사용할 수 있습니다.
plt.figure(figsize=cm2inch(21, 29.7))
psihodelia의 답변을 일반화하고 단순화합니다. 그림의 현재 크기를 요인으로 변경하려면sizefactor
import matplotlib.pyplot as plt
# here goes your code
fig_size = plt.gcf().get_size_inches() #Get current size
sizefactor = 0.8 #Set a zoom factor
# Modify the current size by the factor
plt.gcf().set_size_inches(sizefactor * fig_size)
현재 크기를 변경 한 후 서브 플롯 레이아웃 을 미세 조정해야 할 수도 있습니다 . Figure 창 GUI에서 또는 subplots_adjust 명령을 사용하여이를 수행 할 수 있습니다.
예를 들어
plt.subplots_adjust(left=0.16, bottom=0.19, top=0.82)
plt.figure(figsize=(20,10))