簡體   English   中英

Seaborn 圖例不顯示樣式,僅顯示色調

[英]Seaborn legend not showing style, only showing hue

我試圖在我的觀點中同時使用stylehue來使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM