인쇄하기에 적합하도록 이미지의 크기를 어떻게 변경합니까?
예를 들어 가로 방향으로 크기가 11.7 인치 x 8.27 인치 인 A4 용지에 사용하고 싶습니다.
인쇄하기에 적합하도록 이미지의 크기를 어떻게 변경합니까?
예를 들어 가로 방향으로 크기가 11.7 인치 x 8.27 인치 인 A4 용지에 사용하고 싶습니다.
답변:
그림의 크기를 지정하여 matplotlib Figure 및 Axes 객체를 미리 작성해야합니다.
from matplotlib import pyplot
import seaborn
import mylib
a4_dims = (11.7, 8.27)
df = mylib.load_data()
fig, ax = pyplot.subplots(figsize=a4_dims)
seaborn.violinplot(ax=ax, data=df, **violin_options)
sns.lmplot()
seaborn 방법 에서 rc
키 를 사용하여 사전을 매개 변수 에 전달하여 그림 크기를 설정할 수도 있습니다 .'figure.figsize'
set
import seaborn as sns
sns.set(rc={'figure.figsize':(11.7,8.27)})
다른 대안은 사용 할 수 figure.figsize
의 rcParams
설정을 아래와 같이 그림의 크기 :
from matplotlib import rcParams
# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27
자세한 내용은 matplotlib 설명서를 참조하십시오
.set()
전에 전화 해야 한다는 것을 깨달았습니다..set_style()
컨텍스트를 poster
수동으로 설정하거나 설정할 수 있습니다 fig_size
.
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
np.random.seed(0)
n, p = 40, 8
d = np.random.normal(0, 2, (n, p))
d += np.log(np.arange(1, p + 1)) * -5 + 10
# plot
sns.set_style('ticks')
fig, ax = plt.subplots()
# the size of A4 paper
fig.set_size_inches(11.7, 8.27)
sns.violinplot(data=d, inner="points", ax=ax)
sns.despine()
fig.savefig('example.png')
sns.lmplot()
당신이 시본에서 "그림 수준"방법에 전달하려는 경우 (예를 들어 있습니다 lmplot
, catplot
/ factorplot
, jointplot
) 당신과 사용 인수 내에서이를 지정해야 할 수 있습니다 height
와 aspect
.
sns.catplot(data=df, x='xvar', y='yvar',
hue='hue_bar', height=8.27, aspect=11.7/8.27)
그림 레벨 방법이 축 사양을 준수하지 않는다는 사실에 대한 자세한 내용 은 https://github.com/mwaskom/seaborn/issues/488 및 matplotlib 객체 지향 인터페이스 를 사용하여 seaborn으로 플로팅을 참조 하십시오 .
내 음모 (sns factorplot)의 경우 제안 된 답변이 제대로 작동하지 않았습니다.
따라서 나는
plt.gcf().set_size_inches(11.7, 8.27)
seaborn으로 플롯 한 직후 (따라서 도끼를 seaborn으로 전달하거나 rc 설정을 변경할 필요가 없습니다).
python g = sns.FacetGrid(df.set_index('category'), col="id") pyplot.gcf().set_size_inches(11.7, 8.27) g.map(lambda data, color: data.plot.barh(color=color), "count")
sns.FacetGrid
계산 (설정 값에 따른도 크기를 설정할 것이다 height
및 aspect
) 및 플로팅 시본이 작동 직후 도형의 크기를 변경. 그리고 그림 크기를 변경 한 후 줄거리의 다른 미세 조정이 발생할 수 있습니다.
다중 플롯 그리드 객체를 반환하는 "그림 레벨"방법에 대한 elz 답변 외에도 다음 방법을 사용하여 그림 높이와 너비를 명시 적으로 (가로 세로 비율을 사용하지 않고) 설정할 수 있습니다.
import seaborn as sns
g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figwidth(8.27)
g.fig.set_figheight(11.7)
set_figwidth
및 set_figheight
그리드 오브젝트에 대해 잘 작동합니다. >>> seaborn 가져 오기 >>> matplotlib.pyplot을 pyplot으로 가져 오기 >>> tips = seaborn.load_dataset ( "tips") >>> g = seaborn.FacetGrid (tips, col = "time", row = "smoker") >>> g = g.map (pyplot.hist, "total_bill") >>> g.fig.set_figwidth (10) >>> g.fig.set_figheight (10)
Paul H와 J. Li의 최고의 답변은 모든 유형의 선천적 인 인물에게는 작동하지 않습니다. FacetGrid
유형 ( 예 sns.lmplot()
:)에는 size
and aspect
매개 변수를 사용하십시오 .
Size
가로 세로 비율을 유지하면서 높이와 너비를 모두 변경합니다.
Aspect
높이를 일정하게 유지하면서 너비 만 변경합니다.
이 두 매개 변수를 사용하여 언제든지 원하는 크기를 얻을 수 있습니다.