web-dev-qa-db-ja.com

海鳥プロットのフィギュアサイズを変更するにはどうすればいいですか?

印刷に適したサイズに画像を変更するにはどうすればよいですか。

たとえば、横置きのサイズが11.7インチ×8.27インチのA4用紙を使用します。

125

Figureの大きさを指定して、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)
122
Paul H

また、seabornのrcメソッドで、キー'figure.figsize'を使用してsetパラメータにdictionaryを渡すことで、Figureのサイズを設定することもできます。

import seaborn as sns

sns.set(rc={'figure.figsize':(11.7,8.27)})

他の方法としては、rcParamsfigure.figsizeを使用して、以下のようにFigureのサイズを設定することができます。

from matplotlib import rcParams

# figure size in inches
rcParams['figure.figsize'] = 11.7,8.27

詳細は matplotlibのドキュメントにあります

124
student

コンテキストを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')

enter image description here

79
Jianxun Li

Seabornの "figure level"メソッド(例えばlmplotcatplot/factorplotjointplot)に渡そうとしているのであれば、heightaspectを使ってこれを引数内で指定することができ、またそうすべきです。

sns.catplot(data=df, x='xvar', y='yvar', 
    hue='hue_bar', height=8.27, aspect=11.7/8.27)

Figureレベルのメソッドが行うことについての詳細は、 https://github.com/mwaskom/seaborn/issues/488 および matplotlibオブジェクト指向インターフェースを使用したseabornによるプロット を参照してください。 Axesの仕様に従わないでください。

27
elz

まずmatplotlibをインポートし、それを使ってFigureのサイズを設定します。

from matplotlib import pyplot as plt
import seaborn as sns

plt.figure(figsize=(15,8))
ax = sns.barplot(x="Word", y="Frequency", data=boxdata)
12
Gucci148

私のプロット(sns factorplot)では、提案された答えはうまくいきませんでした。

従って私は使用します

plt.gcf().set_size_inches(11.7, 8.27)

Seabornでプロットした直後(したがって、axabをseabornに渡したりrc設定を変更したりする必要はありません)。

7
head7

これも機能します。

from matplotlib import pyplot as plt
import seaborn as sns    

plt.figure(figsize=(15,16))
sns.countplot(data=yourdata, ...)
4
Mufaddal Tahir

Paul HとJ. Liによるトップの答えは、あらゆる種類の海兵隊員の数字には当てはまりません。 FacetGrid型の場合(例えばsns.lmplot())、sizeおよびaspectパラメーターを使用してください。

Sizeは縦横比を維持しながら、高さと幅の両方を変更します。

Aspectは高さを一定に保ちながら幅を変えるだけです。

あなたはいつでもこれら二つのパラメータで遊ぶことによってあなたの望むサイズを得ることができます。

クレジット: https://stackoverflow.com/a/28765059/3901029

4
Chris

elzマルチプロットグリッドオブジェクトを返す「図レベル」メソッドに関する回答に加えて、次のアプローチを使用して、フィギュアの高さと幅を明示的に(つまり、アスペクト比を使用せずに)設定できます。

import seaborn as sns 

g = sns.catplot(data=df, x='xvar', y='yvar', hue='hue_bar')
g.fig.set_figheight(8.27)
g.fig.set_figheight(11.7)
3
dmainz

これは次を使用して実行できます。

plt.figure(figsize=(15,8))
sns.kdeplot(data,shade=True)
2
PSN