Python Seaborn Matplotlib将线条样式设为传奇

时间:2016-04-16 11:34:48

标签: python matplotlib plot seaborn

我使用factorplot()方法使用Python和Seaborn构建了以下绘图。是否可以使用线条样式作为图例来替换基于右侧线条颜色的图例? enter image description here

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

此外,我试图在factorplot方法中使用color =“black”参数获取黑色两条线,但这会导致异常“factorplot()得到意外的关键字参数'color'”。如何以相同的颜色绘制两条线并仅按线型分开?

谢谢

2 个答案:

答案 0 :(得分:4)

我一直在寻找一种解决方案,试图将线条样式放在像matplotlib这样的传奇中,但我还没有找到如何在seaborn中做到这一点。但是,为了使图例中的数据清晰,我使用了不同的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

答案 1 :(得分:2)

您可以尝试以下方法:

h = plt.gca().get_lines()
lg = plt.legend(handles=h, labels=['YOUR Labels List'], loc='best')

它对我很好。