[解決済み] matplotlibのpyplotの凡例で線の幅を変更する [duplicate].
2023-04-17 10:42:45
質問
pyplotの凡例で紹介されているラインサンプルの太さ/幅を変更したいです。
凡例内の線サンプルの線幅は、それらがプロットで表現する線と同じです (従って、もし線が
y1
が
linewidth=7.0
である場合、凡例に対応する
y1
ラベルもまた
linewidth=7.0
).
凡例の線はプロットで紹介されている線より太くしてほしい。
例えば、以下のコードでは以下のような画像が生成されます。
import numpy as np
import matplotlib.pyplot as plt
# make some data
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# plot sin(x) and cos(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, c='b', label='y1',linewidth=7.0)
ax.plot(x, y2, c='r', label='y2')
leg = plt.legend()
plt.show()
を設定したいのですが
y1
というラベルを凡例に設定したい。
linewidth=7.0
であるのに対し、凡例では
y1
の線は異なる幅を持っています (
linewidth=1.0
).
私はオンラインで解決策を見つけることに失敗しました。唯一の関連する問題は、凡例のバウンディング ボックスの線幅を変更するための回答が
leg.get_frame().set_linewidth(7.0)
. これは、線の線幅を変更しません。
内の
の行の幅は変わりません。
どのように解決するのですか?
@ImportanceOfBeingErnest さんの回答は、凡例ボックス内の線幅を変更したいだけであれば、良い回答です。しかし、凡例の線幅を変更する前にハンドルをコピーする必要があるので、それは少し複雑だと思います。また、凡例ラベルのフォントサイズを変更することはできません。次の2つのメソッドは、より簡潔な方法で、線幅だけでなく、凡例ラベルのテキストフォントサイズを変更することができます。
方法1
import numpy as np
import matplotlib.pyplot as plt
# make some data
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# plot sin(x) and cos(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, c='b', label='y1')
ax.plot(x, y2, c='r', label='y2')
leg = plt.legend()
# get the individual lines inside legend and set line width
for line in leg.get_lines():
line.set_linewidth(4)
# get label texts inside legend and set font size
for text in leg.get_texts():
text.set_fontsize('x-large')
plt.savefig('leg_example')
plt.show()
方法2
import numpy as np
import matplotlib.pyplot as plt
# make some data
x = np.linspace(0, 2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
# plot sin(x) and cos(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y1, c='b', label='y1')
ax.plot(x, y2, c='r', label='y2')
leg = plt.legend()
# get the lines and texts inside legend box
leg_lines = leg.get_lines()
leg_texts = leg.get_texts()
# bulk-set the properties of all lines and texts
plt.setp(leg_lines, linewidth=4)
plt.setp(leg_texts, fontsize='x-large')
plt.savefig('leg_example')
plt.show()
上記の2つの方法は、同じ出力画像を生成します。
関連
-
[解決済み] matplotlib.pyplotで凡例の大きさを変更する方法
-
[解決済み] なぜ多くの例では Matplotlib/pyplot/python で `fig, ax = plt.subplots()` が使われているのでしょうか?
-
[解決済み] MatplotlibでPyPlotに凡例を追加する最も簡単な方法
-
[解決済み] matplotlib のプロットでフォントサイズを変更する方法
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] PythonからSMTPを使用してメールを送信する
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
-
[解決済み] Jupyter (IPython)ノートブックのセッションをpickleして保存する方法
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] django.db.migrations.exceptions.InconsistentMigrationHistory
-
[解決済み] 辞書のキーと値を交換するにはどうすればよいですか?
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Python 3でバイナリデータを標準出力に書き込むには?
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] Ctrl-CでPythonスクリプトを終了できない
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった