Seabornで非正方形のジョイントプロット(jointplot)を描く方法【Matplotlib】
Seabornのjointplot()やJointGridは、デフォルトでは正方形の図として描画されます。しかし、データの特性に応じて横長・縦長など非正方形のレイアウトにしたいケースもあります。そのような場合は、set_figwidth()メソッドとset_figheight()メソッドを使うことで、図の幅と高さを個別に指定できます。
実装の手順
- 図のサイズを設定し、
figure.autolayoutでサブプロット間および周囲の余白を自動調整できるようにします。 - NumPyを使ってxとyのデータポイントを生成します。
- 2つの列(x、y)を持つPandasのデータフレームを作成します。
- jointplot()メソッドを使ってジョイントプロットを描画します。
- 非正方形にするため、返されたオブジェクトから図の幅と高さをそれぞれ設定します。
- 最後にshow()メソッドで図を表示します。
コード例
import seaborn as sns
import numpy as np
from matplotlib import pyplot as plt
import pandas as pd
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
X = np.random.randn(1000,)
Y = 0.2 * np.random.randn(1000) + 0.5
df = pd.DataFrame(dict(x=X, y=Y))
jp = sns.jointplot(x="x", y="y", data=df, height=3.5,
joint_kws={'color': 'red'})
jp.fig.set_figwidth(7.50)
jp.fig.set_figheight(3.50)
plt.show()出力結果

解説のポイント
このコードでは、まずnp.random.randn(1000)で平均0・標準偏差1の正規乱数を1000個生成し、y側には係数0.2を掛けてばらつきを抑え、オフセットとして0.5を加えることで相関のあるデータを作っています。
sns.jointplot()は散布図(ジョイント分布)に加えて、x軸・y軸方向のヒストグラム(周辺分布)も同時に表示してくれる便利な関数です。joint_kws引数に{'color': 'red'}を渡すことで、散布図の色を赤に変更しています。
重要なのは最後の2行です。jointplotが返すオブジェクトの.fig属性に対してset_figwidth(7.50)とset_figheight(3.50)を呼び出すことで、幅7.50インチ×高さ3.50インチの横長の図にリサイズできます。これにより、デフォルトの正方形ではなく、意図したアスペクト比のジョイントプロットを作成可能です。
-
Python Matplotlibで3Dグラフをプロットする方法を解説
PythonのMatplotlibを使えば、3次元の散布図やグラフを簡単に描画できます。この記事では、mpl_toolkits.mplot3dモジュールを利用して3Dグラフを作成する手順を、サンプルコード付きでわかりやすく解説します。 3Dグラフをプロットする基本手順 Pythonで3Dグラフを描くには、以下のステップに従います。 figure()メソッドを使って、新しい図(フィギュア)を作成するか、既存の図をアクティブにします。 Axes3Dオブジェクトを取得して、3D用の座標軸を準備します。 x、y、zそれぞれのデータポイントをリストとして定義します。 scatter3D()メソッドを使
-
Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)
データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。 実装の流れ 2つのグラフを並べて描画するには、以下の手順を実行します。 plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。 Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。 countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。 subplots_a