Matplotlibで3Dバー(3D棒グラフ)に凡例を追加する方法
Matplotlibで3D棒グラフ(3Dバー)に凡例を追加したい場合、bar3d()メソッドでバーを描画し、legend()メソッドを使って凡例を配置します。この記事では、緑と赤の2種類の3Dバーを描画し、それぞれに凡例ラベルを付ける具体的な手順をサンプルコード付きで解説します。
実装の手順
- 図のサイズを設定し、サブプロット間および周囲の余白(パディング)を調整します。
- figure()メソッドで新しい図を作成します。
- add_subplot()で
projection='3d'を指定し、3D描画用のAxesを追加します。 - numpyを使って x3、y3、z3、dx、dy、dz の各データリストを作成します。
- bar3d()メソッドで3Dバーを描画します。
- 凡例のハンドルとして使用する矩形(Rectangle)パッチを作成します。
- legend()メソッドでバーの凡例を配置します。
- show()メソッドで図を表示します。
コード例
import numpy as np from matplotlib import pyplot as plt plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True fig = plt.figure() ax1 = fig.add_subplot(111, projection='3d') x3 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] y3 = [5, 6, 7, 8, 2, 5, 6, 3, 7, 2] z3 = np.zeros(10) dx = np.ones(10) dy = np.ones(10) dz = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 緑色の3Dバーを描画 ax1.bar3d(x3, y3, z3, dx, dy, dz, color="green") b1 = plt.Rectangle((0, 0), 1, 1, fc="green") # 赤色の3Dバーを描画 ax1.bar3d(y3, x3, z3, dx, dy, dz, color="red") b2 = plt.Rectangle((0, 0), 1, 1, fc="red") # 凡例を設定して表示 ax1.legend([b1, b2], ['type1', 'type2']) plt.show()
ポイント解説
bar3d()メソッドは通常のプロット関数と異なり、直接凡例ハンドルを返しません。そのため、凡例に表示したい色ごとに plt.Rectangle でダミーのパッチオブジェクトを作成しています。fc 引数でバーと同じ塗りつぶし色を指定することで、凡例の見た目が実際のバーと一致します。
また、2つ目の bar3d() では x3 と y3 の値を入れ替えて描画することで、同じデータセットから異なる配置のバーを作り出しています。これにより、緑(type1)と赤(type2)の2種類のバーをひとつの3D空間上で視覚的に比較できます。
出力結果

-
Matplotlibの図に凡例を配置・整列させる方法
Matplotlibで作成した図(フィギュア)に凡例を適切な位置に配置し、要素を整列させる方法を解説します。凡例の位置調整には bbox_to_anchor 引数を使用するのがポイントです。 手順 plot() メソッドを使って line1 と line2 の2本の線をプロットします。 legend() メソッドで図に凡例を配置します。このとき bbox_to_anchor を使って凡例の位置を指定し、ncol 引数で凡例要素を横並びに整列させます。 show() メソッドを呼び出して図を表示します。 コード例 from matplotlib import pyplot as plt pl
-
PythonのMatplotlibでワッフルチャートを作成する方法を解説
ワッフルチャート(Waffle Chart)は、目標に対する進捗状況を視覚的に表現するのに適した、魅力的なデータ可視化手法です。四角いマスが並ぶ様子がワッフルに似ていることからこの名前が付けられており、構成比や達成率を直感的に伝えられます。Pythonでワッフルチャートを作成するには、pywaffleライブラリを使用します。新しい図を作成する際、または既存の図を有効化する際に、FigureClass=Waffleを指定することで簡単に描画できます。作成手順辞書を使ってPandasのデータフレームを作成します。plt.figure()で新しい図を作成する際に、FigureClass=Waffle