我试图在我的观点中同时使用style
和hue
来使用海航来可视化我的数据。参见下面的示例。
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()
输出如下。我也希望能看到传说中的性别差异。我怎样才能做到这一点?例如蓝色x-男性午餐,蓝色*-女性午餐,橙色x-男性晚餐,橙色*-女性晚餐。如果我甚至可以使用sns.catplot
或任何其他方法进行同样的操作,这也很好。
发布于 2020-12-04 06:47:40
必须将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文档中的警告:
警告 当使用从数据集推断语义映射的海运函数时,必须注意>对跨方面的映射进行同步(例如,将色调映射与>调色板dict相对应,或将变量的数据类型设置为类别)。在大多数情况下,与直接使用>FacetGrid相比,使用图形级函数(例如relplot()或catplot())更好。
如果默认值适合您,则最好使用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))
https://stackoverflow.com/questions/65144637
复制