Seabornで2つのグラフを横に並べてプロットする方法(Matplotlib)
データ分析では、複数のグラフを1つの図の中に並べて比較できると非常に便利です。この記事では、SeabornとMatplotlibを組み合わせて、2つのグラフを横並び(1行2列)で表示する方法を解説します。
実装の流れ
2つのグラフを並べて描画するには、以下の手順を実行します。
- plt.subplots(1, 2) を使い、figureサイズ(7, 7)で1行2列のサブプロットを作成します。
- Pandasを使って、col1 と col2 のキーを持つデータフレームを作成します。
- countplot() メソッドを使用し、カテゴリごとの観測値の件数を棒グラフで可視化します。
- subplots_adjust() などでサブプロット間の余白(パディング)を調整します。
- show() メソッドを呼び出して、図を画面に表示します。
コード例
import pandas as pd import numpy as np import seaborn as sns from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True # 1行2列のサブプロットを作成 f, axes = plt.subplots(1, 2) # データフレームを作成 df = pd.DataFrame(dict(col1=np.linspace(1, 10, 5), col2=np.linspace(1, 10, 5))) # 左側にcol1のカウントプロット(赤)、右側にcol2のカウントプロット(緑)を描画 sns.countplot(df.col1, x='col1', color="red", ax=axes[0]) sns.countplot(df.col2, x="col2", color="green", ax=axes[1]) plt.show()
実行結果
上記のコードを実行すると、赤色のグラフ(col1)と緑色のグラフ(col2)が1つのウィンドウ内に左右に並んで表示されます。ax 引数にそれぞれのAxesオブジェクトを渡すことで、どの位置にグラフを描画するかを指定できるのがポイントです。
補足:レイアウト調整のコツ
グラフ同士が重なって見づらい場合は、plt.tight_layout() を呼び出すか、冒頭の plt.rcParams["figure.autolayout"] = True の設定により、タイトルや軸ラベルが自動的に収まるよう調整されます。また、plt.subplots(2, 1) とすれば、縦方向に2つのグラフを積み重ねることも可能です。
-
Matplotlibで棒グラフのラベルに絵文字を表示する方法
Matplotlibでは、annotate()メソッドを使うことで、棒グラフの各バーの上部に絵文字をラベルとして簡単に配置できます。データの視覚化にアクセントを加えたい場合に便利なテクニックです。実装手順図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。頻度を表すリストfreqsと、絵文字を含むラベルのリストlabelsを作成します。figure()メソッドを使用して、新しい図を作成します。bar()メソッドで棒グラフを描画します。annotate()メソッドを使って、各バーの上に絵文字をラベルとして配置します。show()メソッドで図を表示します。コード例impo
-
Matplotlibで円の中に長方形をプロットする方法
Matplotlibを使って円の中に長方形を描画したい場合、patchesモジュールが提供するRectangle()クラスとCircle()クラスを組み合わせることで簡単に実現できます。以下の手順に従ってください。手順figure()メソッドを使用して、新しい図を作成するか、既存の図をアクティブにします。add_subplot()メソッドで現在の図にサブプロット(軸)を追加します。Rectangle()クラスとCircle()クラスを使って、長方形と円のインスタンスを作成します。add_patch()メソッドで作成したパッチを軸に追加します。xlim()およびylim()メソッドを使用して、x