MENU
カタログクリップ
本ページはプロモーションを含みます。

凡例の枠スタイルを高度にカスタマイズする方法。線種・色。[matplotlib]

2025 3/03
広告
matplotlib
2025年3月3日

matplotlibでは、グラフに凡例(legend)を追加することができますが、デフォルトの枠のデザインでは味気ないと感じることがあるかもしれません。本記事では、凡例の枠のスタイルをカスタマイズする方法を詳しく解説します。

目次

基本的な凡例の表示

まずは、matplotlibで凡例を表示する基本的なコードを見てみましょう。

import matplotlib.pyplot as plt  
import numpy as np  

# データの準備
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# グラフの作成
plt.plot(x, y1, label="sin(x)")
plt.plot(x, y2, label="cos(x)")

# 凡例の表示
plt.legend()

# グラフの表示
plt.show()

このコードを実行すると、凡例がデフォルトの枠付きで表示されます。次に、この枠のスタイルを変更する方法を見ていきましょう。

凡例の枠を非表示にする

枠を削除したい場合は、frameon=False を指定します。

plt.legend(frameon=False)

このオプションを追加すると、凡例の枠がなくなり、テキストと凡例のマーカーだけが表示されます。

凡例の枠の透明度を調整する

枠の透明度を変更するには、framealpha を指定します。

plt.legend(frameon=True, framealpha=0.5)

この設定では、枠の透明度が50%(0.5)になり、背景が少し透けて見えます。完全に不透明にする場合は 1.0、完全に透明にする場合は 0.0 を指定します。

凡例の枠の角を丸くする

枠の角を丸くするには、fancybox=True を指定します。

plt.legend(frameon=True, fancybox=True)

このオプションを有効にすると、凡例の枠が角丸のデザインになります。デフォルト値はrcParams に従いますが、True となっています。

Falseを指定すると角丸にしません。

plt.legend(frameon=True, fancybox=False)

凡例の枠の影をつける

凡例の枠に影をつけるには、shadow=True を指定します。

plt.legend(frameon=True, shadow=True)

これを追加すると、凡例の枠に影がつき、少し立体的な見た目になります。

凡例の枠の線種を変更する

枠の線種を変更するには、edgecolor(枠線の色)と linestyle(線のスタイル)を指定します。線種(linestyle)の変更は、凡例オブジェクトから枠(frame)を取得し、そのプロパティを変更する方法で行います。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, label="sin(x)")
plt.plot(x, y2, label="cos(x)")

# 凡例を作成(edgecolorを指定)
legend = plt.legend(frameon=True, edgecolor="red")

# 凡例の枠に対して線種を変更
frame = legend.get_frame()
frame.set_linestyle("dashed")  # または '--' でも可

plt.show()

この例では、枠の色を赤 (red) にし、破線 (dashed) に設定しています。

Linestyle(線のスタイル)オプション一覧

オプション同義語説明
'-''solid'実線(デフォルト)
'--''dashed'破線
'-.''dashdot'点線と破線の組み合わせ
':''dotted'点線
(タプル)-カスタムダッシュパターン(例: (0, (3, 5, 1, 5)))

※ set_linestyle() メソッドにこれらの値を渡して使用します。

Edgecolor(枠線の色)オプション一覧

Matplotlibでは、edgecolor に対しては標準のカラー指定方法がすべて利用可能です。主な指定方法は以下の通りです。

オプション説明
'b'青(blue)
'g'緑(green)
'r'赤(red)
'c'シアン(cyan)
'm'マゼンタ(magenta)
'y'黄(yellow)
'k'黒(black)
'w'白(white)
カラー名文字列CSS4で定義される任意のカラー名(例: 'orange'、'purple' など)
HEXカラーコード例: '#FF5733'、'#00FF00'
RGBタプル例: (1.0, 0.0, 0.0)(赤)

凡例の枠の詳細なカスタマイズ

凡例オブジェクトから枠のプロパティを直接変更する

plt.legend() の戻り値である凡例オブジェクトを利用すると、枠(FancyBboxPatch オブジェクト)の細かいプロパティを直接変更することができます。以下のコード例では、枠線の太さ、枠線の色、背景色を変更しています。

import matplotlib.pyplot as plt
import numpy as np

# データの準備
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

# グラフの作成
plt.plot(x, y1, label="sin(x)")
plt.plot(x, y2, label="cos(x)")

# 凡例の生成(fancyboxで角丸にする)
legend = plt.legend(frameon=True, fancybox=True)

# 凡例の枠にアクセスし、プロパティを変更
frame = legend.get_frame()
frame.set_linewidth(2)          # 枠線の幅を2に設定
frame.set_edgecolor("green")     # 枠線の色を緑に設定
frame.set_facecolor("lightgray") # 枠の背景色をライトグレーに設定

plt.show()

枠のボックススタイルの変更

matplotlibのFancyBboxPatchは、枠のボックススタイルを変更する機能も持っています。set_boxstyle()メソッドを用いると、角の丸みやパディングを細かく調整できます。例えば、以下のコードでは、角を丸くし、パディングを0.5に設定しています。

legend = plt.legend(frameon=True, fancybox=True)
frame = legend.get_frame()
frame.set_boxstyle("round,pad=0.5")

この設定により、見た目に柔らかさが加わり、グラフ全体の印象を向上させることができます。

複数のオプションを組み合わせる際の注意点

  • fancyboxとset_boxstyleの併用
    fancybox=True は角丸のスタイルを適用するための簡便な方法ですが、set_boxstyle() でカスタムボックススタイルを設定した場合、後者が優先されます。用途に応じて使い分けるとよいでしょう。
  • 変更の反映
    インタラクティブモードがオフの場合、または既存の図に対して変更を加える場合は、plt.draw() を呼び出すことで変更を即時反映させることができます。

その他の凡例カスタマイズのヒント

凡例の枠以外にも、以下のような設定項目を組み合わせることで、より見やすいグラフを作成できます。

  • 凡例の位置調整
    loc オプションで凡例の位置を指定することができます。例: plt.legend(loc="upper right")
  • 凡例内の間隔調整
    borderpad、labelspacing、handlelength などのパラメータを用いることで、凡例内のテキストとマーカー間のスペースや、枠と内容の間隔を調整できます。

これらのオプションは、グラフの見やすさを向上させるために有用です。

まとめ

Matplotlibでは、凡例の枠を細かくカスタマイズできます。以下に今回紹介した設定をまとめます。

設定オプション例
枠を非表示にするframeon=Falseplt.legend(frameon=False)
枠の色を変更するedgecolor="色"plt.legend(edgecolor="red")
枠の線種を変更するlinestyle="スタイル"plt.legend(linestyle="dashed")
枠の透明度を変更するframealpha=値plt.legend(framealpha=0.5)
角丸にするfancybox=Trueplt.legend(fancybox=True)
影をつけるshadow=Trueplt.legend(shadow=True)

これらを組み合わせることで、より見やすいグラフを作成できます。

ぜひ、自分の用途に合ったデザインを試してみてください!

まとめ

  • https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.legend.html
  • 凡例 (legend) の位置を自由に調整する方法 [matplotlib]
  • matplotlib の凡例を消す方法
  • 凡例のフォントやマーカーサイズの調整方法 [matplotlib]
  • 凡例を枠外に配置する方法 [matplotlib]
  • 凡例の枠を消す・透明にする・スタイルを変更する方法 [matplotlib]
matplotlib

関連記事

  • クイックスタートガイド matplotlibドキュメント日本語訳
    2025年3月4日
  • colormapを取得する方法。 [matplotlib]
    2025年3月4日
  • colormapを自作する3つの方法。 [matplotlib]
    2025年3月4日
  • scatter(散布図)プロットでcolormapを使用する方法。[matplotlib]
    2025年3月4日
  • colormapの範囲指定方法・高度な正規化の方法。 [matplotlib]
    2025年3月4日
  • Colorbarを反転する2つの方法 [matplotlib]
    2025年3月4日
  • matplotlib で colormap を反転する2つの方法
    2025年3月4日
  • cmap(colormap)一覧と選び方・使用方法 [matplotlib]
    2025年3月4日
カテゴリー
  • コンピューター
    • gnuplot & eps
    • mac
    • matplotlib
    • wordpress
  • ホーム・家電
    • アイロン
    • オーディオ
    • オーラルケア
      • ジェットウォッシャー
      • 音波振動歯ブラシ
    • カメラ
    • カー用品
    • クリーナー
    • テレビ、レコーダー
    • ドアホン
    • メンズ美容家電
      • ラムダッシュ
    • ルンバ
    • 一覧比較
    • 工具
    • 浄水器
    • 温水洗浄便座
    • 炊飯器
    • 空気清浄機・加除湿機
    • 空調・季節家電
    • 美容家電
      • フェイスケア
      • ヘアケア
      • ボディーケア
    • 血圧計
    • 調理器具
    • 電子レンジ
  • 健康
  • 家事
    • パン
    • 料理
    • 育児
    • 食品
      • おせち
      • コーヒー
  • 書籍
  • 知識
  • 趣味
    • ペン字
    • ロードバイク・クロスバイク
    • 車
    • 鉄道模型
    • 電子工作
サイト内検索
最近の投稿
  • モナークHGとモナークM7の4つの違い。[ニコン双眼鏡]
  • ニコン モナーク M7とM5の4つの違い。[双眼鏡]
  • Speed Wi-Fi DOCK 5G 01の実機使用レビュー。
  • RZ-760、GT-760、ST-760の違い。[ガス缶・CB缶]
  • RZ-730、RZ-730S、RZ-730SBK、RZ-730SWH、ST-Y450の違い。
  • TC-EA35WとTC-E123SBKの違いを比較。[スティッククリーナー]
  1. ホーム
  2. コンピューター
  3. matplotlib
  4. 凡例の枠スタイルを高度にカスタマイズする方法。線種・色。[matplotlib]
  • ホーム
  • プライバシーポリシー

© カタログクリップ
contact@beiznotes.org

目次