印刷に適するように画像のサイズを変更するにはどうすればよいですか?
たとえば、横向きで11.7インチx 8.27インチのA4用紙を使用したいとします。
印刷に適するように画像のサイズを変更するにはどうすればよいですか?
たとえば、横向きで11.7インチx 8.27インチのA4用紙を使用したいとします。
回答:
フィギュアの大きさを指定して、matplotlibフィギュアオブジェクトと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サイズを設定することもできます。'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()
あなたはseabornで「フィギュアレベル」メソッドに渡すしようとしている場合(たとえばことに注意してください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)
図レベルのメソッドがAxesの仕様に従っていないという事実の詳細については、https://github.com/mwaskom/seaborn/issues/488およびmatplotlibオブジェクト指向インターフェイスを使用したseabornでのプロットを参照してください。
私のプロット(sns factorplot)では、提案された答えはうまくいきませんでした。
したがって、私は使用します
plt.gcf().set_size_inches(11.7, 8.27)
seabornのあるプロットの直後(つまり、axを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
)とseabornプロットが動作する直後の図のサイズを変更します。そして、図のサイズを変更した後、プロットの他の微調整が行われる可能性があります
マルチプロットグリッドオブジェクトを返す「図レベル」メソッドに関する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
およびaspect
パラメータ。
Size
アスペクト比を維持しながら、高さと幅の両方を変更します。
Aspect
高さを一定に保ち、幅のみを変更します。
これらの2つのパラメーターを使用して、いつでも希望のサイズを取得できます。