[解決済み] シーボーン凡例のタイトルとラベルを編集する方法(図レベル関数
2022-02-26 19:36:46
質問
Seabornとpandasのdataframeを使ってプロットしてみました。
data
):
私のコード
g = sns.lmplot('credibility', 'percentWatched', data=data, hue = 'millennial', markers = ["+", "."], x_jitter = True, y_jitter = True, size=5)
g.set(xlabel = 'Credibility Ranking\n ← Low High →', ylabel = 'Percent of Video Watched [%]')
プロットの凡例タイトルが単に変数名('millennial')で、凡例項目が変数の値(0、1)であることにお気づきでしょう。凡例のタイトルとラベルはどのように編集できますか?理想的には、凡例のタイトルは「Generation」、ラベルは「"Millennial" and "Older Generations"」です。
どのように解決するのですか?
-
もし
legend_out
に設定されています。True
の場合、凡例はg._legend
プロパティがあり、図の一部となっています。Seabornの凡例は標準的なmatplotlibの凡例オブジェクトです。したがって、凡例テキストを変更することができます。 -
でテストしています。
python 3.8.11
,matplotlib 3.4.3
,seaborn 0.11.2
import seaborn as sns
# load the tips dataset
tips = sns.load_dataset("tips")
# plot
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, markers=["o", "x"], facet_kws={'legend_out': True})
# title
new_title = 'My title'
g._legend.set_title(new_title)
# replace labels
new_labels = ['label 1', 'label 2']
for t, l in zip(g._legend.texts, new_labels):
t.set_text(l)
もう一つの状況もし
legend_out
が設定されます。
False
. どの軸に凡例があるかを定義する必要があります(以下の例では、軸番号0です)。
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, markers=["o", "x"], facet_kws={'legend_out': False})
# check axes and find which is have legend
leg = g.axes.flat[0].get_legend()
new_title = 'My title'
leg.set_title(new_title)
new_labels = ['label 1', 'label 2']
for t, l in zip(leg.texts, new_labels):
t.set_text(l)
さらに、両方の状況を組み合わせて、このコードを使用することもできます。
g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips, markers=["o", "x"], facet_kws={'legend_out': True})
# check axes and find which is have legend
for ax in g.axes.flat:
leg = g.axes.flat[0].get_legend()
if not leg is None: break
# or legend may be on a figure
if leg is None: leg = g._legend
# change legend texts
new_title = 'My title'
leg.set_title(new_title)
new_labels = ['label 1', 'label 2']
for t, l in zip(leg.texts, new_labels):
t.set_text(l)
このコードは、seabornのプロットで、以下のものをベースにしています。
Grid
クラス
.
関連
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】csv.Error:イテレータはバイトではなく文字列を返すべき
-
[解決済み】TypeErrorを取得しました。エントリを持つ子テーブルの後に親テーブルを追加しようとすると、 __init__() missing 1 required positional argument: 'on_delete'
-
[解決済み] builtins.TypeError: strでなければならない、bytesではない
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】NameError: 名前 'self' が定義されていません。
-
[解決済み】Matplotlibで図のタイトルと軸ラベルのフォントサイズを設定するには?
-
[解決済み] Seaborn軸または図レベルプロットの図サイズを変更する方法
最新
-
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によるLeNetネットワークモデルの学習と予測
-
Pythonによるjieba分割ライブラリ
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み] データ型が理解できない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない