tsplot
ドキュメンテーションのこの例 のようにseaborn.tsplot
を使用して時系列プロットを作成したいのですが、凡例を図の外側に移動しました。
seaborn's timeseries.py の339-340行に基づいて、seaborn.tsplot
は現在、凡例の配置を直接制御できないように見えます。
if legend:
ax.legend(loc=0, title=legend_name)
Matplotlibの回避策はありますか? seaborn 0.6-devを使用しています。
実際、seaborn
はこれまでのところ凡例をうまく処理していません。 Matplotlib Legend Guide に従って、plt.legend()
を使用して、matplotlib
を介して凡例プロパティを直接制御できます。
例:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(style="darkgrid")
# Load the long-form example gammas dataset
gammas = sns.load_dataset("gammas")
# Plot the response with standard error
sns.tsplot(data=gammas, time="timepoint", unit="subject",
condition="ROI", value="BOLD signal")
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
T = W。の答えをseaborn lineplotに適用しようとしましたが、成功しませんでした。彼の答えに対するいくつかの修正が仕事をしました...誰かが私がそうであったようにラインプロットバージョンを探しているなら!
import seaborn as sns
import pandas as pd
# load data
df = sns.load_dataset("gammas")
# EDIT: I Needed to ad the fig
fig, ax1 = plt.subplots(1,1)
# EDIT:
# T.W.' answer said: "create with hue but without legend" <- # I needed to include it!
# So, removed: legend=False
g = sns.lineplot(x="timepoint", y="BOLD signal", hue="ROI", data=df, ax=ax1)
# EDIT:
# Removed 'ax' from T.W.'s answer here aswell:
box = g.get_position()
g.set_position([box.x0, box.y0, box.width * 0.85, box.height]) # resize position
# Put a legend to the right side
g.legend(loc='center right', bbox_to_anchor=(1.25, 0.5), ncol=1)
plt.show()
セルゲイの答えは、seaborn.tsplot
しかし、私はseaborn.lmplot
だから私はもう少し深く見て、別の解決策を見つけました:
例:
import seaborn as sns
import pandas as pd
# load data
df = pd.DataFrame.from_csv('mydata.csv')
# create with hue but without legend
g = sns.lmplot(x="x_data", y="y_data", hue="condition", legend=False, data=df)
# resize figure box to -> put the legend out of the figure
box = g.ax.get_position() # get position of figure
g.ax.set_position([box.x0, box.y0, box.width * 0.85, box.height]) # resize position
# Put a legend to the right side
g.ax.legend(loc='center right', bbox_to_anchor=(1.25, 0.5), ncol=1)
sns.plt.show(g)
たぶん、あなたはそれらをあなたの伝説に合わせるために値をいじる必要があります。 これ 回答は、さらに例を必要とする場合にも役立ちます。