2016-04-16 23 views
5

Ho il seguente sviluppo di trama con Python e Seaborn utilizzando il metodo factorplot(). È possibile utilizzare lo stile di linea come legenda per sostituire la legenda in base al colore della linea sulla destra? enter image description herePython Seaborn Matplotlib stile della linea di impostazione come legenda

graycolors = sns.mpl_palette('Greys_r', 4) 
g = sns.factorplot(x="k", y="value", hue="class", palette=graycolors, data=df, linestyles=["-", "--"]) 

Inoltre sto cercando di ottenere entrambe le linee di colore nero con il colore = parametro "nero" nel mio metodo factorplot ma questo si traduce in un'eccezione "factorplot() ha ottenuto un 'colore' argomento inaspettato parola chiave ". Come posso dipingere entrambe le linee nello stesso colore e separarle solo dal linestyle?

Grazie

risposta

3

Sono stato alla ricerca di una soluzione cercando di mettere lineStyle nella leggenda come matplotlib, ma non ho ancora trovato il modo di fare questo in Seaborn. Tuttavia, per rendere i dati chiari nella legenda ho usato diverse markers:

import seaborn as sns 
import numpy as np 
import pandas as pd 

# creating some data 
n = 11 
x = np.linspace(0,2,n) 
y = np.sin(2*np.pi*x) 
y2 = np.cos(2*np.pi*x) 
df=pd.DataFrame({'x':np.append(x, x),'y':np.append(y, y2),'class':np.append(np.repeat('sin',n),np.repeat('cos',n))}) 

# plot the data with the markers 
# note that I put the legend=False to move it up (otherwise it was blocking the graph) 
g=sns.factorplot(x="x",y="y",hue="class",palette=graycolors, data=df, linestyles=["-", "--"],markers=['o','v'], legend=False) 
# placing the legend up 
g.axes[0][0].legend(loc=1) 
#showing graph 
plt.show() 

the graph

+0

impressionante, grazie. Ancora rilevante per me –

Problemi correlati