你如何设置你的lmplot,使你不仅每个变量都有不同的色调,还有不同的标记?
例如,根据哪个'类别'您将如何为这些点获得不同的标记?他们属于?
import pandas as pd
import seaborn as sns
dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
df=pd.DataFrame(dic)
sns.lmplot('A', 'B', data=df, hue='category', fit_reg=False)]
我一直试图传递一个列表,例如:
marker_cycle=['o', 'x', '^']
[next(marker_cycle) for i in df["category"].unique()
但尚未成功。
答案 0 :(得分:2)
markers
sns.lmplot
sns.lmplot('A', 'B', data=df, hue='category', fit_reg=False,markers=['o', 'x'])
答案 1 :(得分:0)
见this issue。
next()
需要使用迭代器。您可以使用intertools
,
import itertools
mks = itertools.cycle(['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V'])
markers = [next(mks) for i in df["category"].unique()]
示例:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
df=pd.DataFrame(dic)
import itertools
mks = itertools.cycle(['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V'])
markers = [next(mks) for i in df["category"].unique()]
sns.lmplot('A', 'B', data=df, hue='category', markers=markers, fit_reg=False)
plt.show()
请注意,这可能有点矫枉过正,您可以直接从列表中获取标记,
marker = ['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V']
markers = [marker[i] for i in range(len(df["category"].unique()))]
完整示例:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
dic={"A":[4,6,5], "B":[2,7,5], "category":['A','A',"B"]}
df=pd.DataFrame(dic)
marker = ['o', 'x', '^', '+', '*', '8', 's', 'p', 'D', 'V']
markers = [marker[i] for i in range(len(df["category"].unique()))]
sns.lmplot('A', 'B', data=df, hue='category', markers=markers, fit_reg=False)
plt.show()
上述两种解决方案都会产生相同的情节:
答案 2 :(得分:0)
也许添加style ='category'
sns.lmplot('A', 'B', data=df, hue='category', style='category', fit_reg=False)]