[英]Seaborn legend not showing style, only showing hue
我試圖在我的觀點中同時使用style
和hue
來使用seaborn可視化我的數據。 請參見下面的示例。
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('tips')
grid = sns.FacetGrid(data=df, row='smoker', col='day', hue='time', sharex=False, sharey=False)
grid.map_dataframe(sns.scatterplot, x='total_bill', y='tip', style='sex')
grid.add_legend()
output 如下。 我也希望能夠看到傳說中的性別差異。 我怎樣才能做到這一點? 例如,藍色 x - 男性午餐,藍色 * - 女性午餐,橙色 x - 男性晚餐,橙色 * - 女性晚餐。 如果我什至可以使用sns.catplot
或任何其他也可以的方法來做同樣的事情。
您必須將hue=
和style=
移動到對scatterplot()
的調用
import matplotlib.pyplot as plt
import seaborn as sns
df = sns.load_dataset('tips')
grid = sns.FacetGrid(data=df, row='smoker', col='day', sharex=False, sharey=False)
grid.map_dataframe(sns.scatterplot, x='total_bill', y='tip', hue='time', style='sex')
grid.add_legend()
但是,您需要注意 FacetGrid 文檔中的警告:
警告
當使用從數據集推斷語義映射的 seaborn 函數時,必須注意在各個方面同步這些映射(例如,通過使用調色板字典定義色調映射或將變量的數據類型設置為類別)。 在大多數情況下,> 使用圖形級別的 function(例如 relplot() 或 catplot())會比直接使用 >FacetGrid 更好。
如果默認值適合您,最好使用sns.relplot()
:
sns.relplot(data=df, row='smoker', col='day', x='total_bill', y='tip', hue='time', style='sex', facet_kws=dict(sharex=False, sharey=False))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.