web-dev-qa-db-ja.com

シーボーン:背景色の伝説

次の質問では、凡例の背景色を変更する方法について説明します: matplotlib legend background color 。ただし、seabornを使用する場合、これは機能しません。これを行う方法はありますか?

import matplotlib.pyplot as plt
import numpy as np
a = np.random.Rand(10,1)

plt.plot(a, label='label')
legend = plt.legend()
frame = legend.get_frame()
frame.set_facecolor('green')
plt.show()


import seaborn as sns

plt.plot(a, label='label')
legend = plt.legend()
frame = legend.get_frame()
frame.set_facecolor('green')
plt.show()

with matplotlibwith seaborn

21
mathause

seabornはデフォルトで凡例フレームをオフにします。フレームの外観をカスタマイズする場合は、frameon=Trueを呼び出すときにplt.legendを追加する必要があると思います。

38
mwaskom

set_style()メソッドは、スタイル引数(_'white'_、_'whitegrid'_、_'darkgrid'_など)と、デフォルトの外観をオーバーライドするためのパラメーターの辞書を使用できます。凡例フレームをオンまたはオフにします。

変更したい他の小さなスタイリングがあれば、私はよくやりますが、この方法で一度にすべてを設定できます。

_import seaborn
seaborn.set_style('darkgrid', {'legend.frameon':True})
_

ドキュメント に従って、seaborn.axes_style()seabornの現在のrc設定を取得できます。

_{'axes.axisbelow': True,
 'axes.edgecolor': '.8',
 'axes.facecolor': 'white',
 'axes.grid': True,
 'axes.labelcolor': '.15',
 'axes.linewidth': 1.0,
 'figure.facecolor': 'white',
 'font.family': [u'sans-serif'],
 'font.sans-serif': [u'Arial',
  u'DejaVu Sans',
  u'Liberation Sans',
  u'Bitstream Vera Sans',
  u'sans-serif'],
 'grid.color': '.8',
 'grid.linestyle': u'-',
 'image.cmap': u'rocket',
 'legend.frameon': False,
 'legend.numpoints': 1,
 'legend.scatterpoints': 1,
 'lines.solid_capstyle': u'round',
 'text.color': '.15',
 'xtick.color': '.15',
 'xtick.direction': u'out',
 'xtick.major.size': 0.0,
 'xtick.minor.size': 0.0,
 'ytick.color': '.15',
 'ytick.direction': u'out',
 'ytick.major.size': 0.0,
 'ytick.minor.size': 0.0}
_
9
ryanjdillon