2015-05-27 11 views
8

this example from tsplot documentation'da olduğu gibi seaborn.tsplot kullanarak bir zaman dizisi oluşturmayı, ancak lejantın şekli dışında sağa taşınmasını istiyorum.Yürütme efsanesinin dış görünüşü, deniz kıyısı tsplotunda

if legend: 
     ax.legend(loc=0, title=legend_name) 

bir matplotlib çözüm var mı: 339-340 seaborn's timeseries.py satırların dayanarak

example

, şu anda efsane yerleştirme doğrudan kontrolünü izin vermez seaborn.tsplot benziyor? Seaborn 0.6-dev kullanıyorum.

+2

Eğer 'ax.legend' diye bir çağrı yaparsanız, yeniden çizecek, ikinci bir tane eklemeyeceksiniz. – mwaskom

+0

@mwaskom: Benim için çalışıyor. Teşekkürler! – bnelsj

cevap

20

Gerçekten de, seaborn şu ana kadarki efsaneleri işlemez. plt.legend()'u kullanarak'a uygun olarak legend özelliklerini doğrudan matplotlib aracılığıyla kontrol edebilirsiniz.

Örnek:

import matpltlib.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.) 

Modified legend position

+0

Son satır çözümdür. Ayrıca benim barplot için çalıştı. – Denziloe

0

tarafından Sergey cevap seaborn.tsplot kullanarak benim için çok çalıştı ama bir seaborn.lmplot için çalışan almak mümkün değildi bu yüzden biraz daha derine baktım ve başka bulundu çözelti:

Örnek:

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) 

Belki de onları efsanenize uyacak şekilde değerlerle oynamak zorundasınız. Daha fazla örneğe ihtiyacınız varsa This cevabı da yararlı olacaktır.