Seaborn Facet Grid 'col=' 不在 Jupyter Notebook 中并排创建绘图
Posted
技术标签:
【中文标题】Seaborn Facet Grid \'col=\' 不在 Jupyter Notebook 中并排创建绘图【英文标题】:Seaborn Facet Grid 'col=' not creating plots side by side in Jupyter NotebookSeaborn Facet Grid 'col=' 不在 Jupyter Notebook 中并排创建绘图 【发布时间】:2021-02-23 05:50:16 【问题描述】:我正在尝试并排绘制两个 seaborn catplots,而不是一个在另一个之上。为了不共享 x 轴,我必须创建一个 FacetGrid 实例并使用 '.map_dataframe' 函数来生成两个图,但它已将它们生成在另一个之上。 (我能够通过使用 'sns.catplot' 并排创建图,但是 'sharex=False' 参数不起作用,我最终得到了两个 x 轴上的所有值。)
这是我的代码:
grid = sns.FacetGrid(data = pcd_data, col = 'Multi Storey Property')
grid.map_dataframe(sns.catplot, kind = 'bar', x="House Type ",
y="Percentage", height = 6, hue="Last Balance Range Sort",
palette = 'pastel', alpha = 0.6)
plt.close(1)
plt.show()
它产生了以下内容:
任何帮助将不胜感激。
我正在使用 Python 3.8.3 Anaconda。康达 4.9.1
谢谢
【问题讨论】:
【参考方案1】:您可以使用示例数据集将列提供给catplot
:
import seaborn as sns
data = sns.load_dataset("exercise")
data = data.groupby(["diet","kind","time"])["pulse"].agg("mean").reset_index()
data.head()
diet kind time pulse
0 no fat rest 1 min 91.8
1 no fat rest 15 min 92.2
2 no fat rest 30 min 93.0
3 no fat walking 1 min 95.6
4 no fat walking 15 min 98.6
sns.catplot(x='kind',y='pulse',hue='time',kind='bar',col='diet',data=data)
如果你有不同的x轴,你可以把x标签变成一个字符串:
data = data[~((data.diet=="no fat") & (data.kind=="rest"))]
data['kind'] = data['kind'].astype('str')
与@Alex 解决方案类似,您调用 facet 并将 barplot 映射到其上,第一个参数用于 x 轴、第二个 y 轴和第三个色调:
g = sns.FacetGrid(data, col="diet",sharex=False,sharey=False)
g.map(sns.barplot, "kind", "pulse",'time',hue_order=data.time.unique())
【讨论】:
谢谢。对不起,我可能没有很好地描述这个问题。我的问题是我希望我的地块像你的一样并排,但也不必在 x 轴上有相同的标签。例如。在您的示例中,假设假设“饮食=低脂肪”组没有“种类=休息”的数据,因此应该将其排除在右侧图表的 x 轴之外。在我的示例中,“sharex = False”参数不起作用。 好的是的..我编辑了我的答案,你需要使用 facet.. 看看它是否有效?【参考方案2】:您正在使用catplot
,它返回FacetGrid
。相反,您应该直接使用sns.barplot
:
grid = sns.FacetGrid(data=pcd_data, col="Multi Storey Property")
grid.map_dataframe(
sns.barplot,
x="House Type ",
y="Percentage",
hue="Last Balance Range Sort",
palette="pastel",
alpha=0.6,
)
grid.set_axis_labels("House Type", "Percentage")
grid.add_legend()
【讨论】:
以上是关于Seaborn Facet Grid 'col=' 不在 Jupyter Notebook 中并排创建绘图的主要内容,如果未能解决你的问题,请参考以下文章
使用 facet_grid 和一个因子来确定列的填充颜色时保持列的顺序 (geom_col)
如何使用 Seaborn 创建 FacetGrid 堆叠条形图?
pandas数据预处理(字段筛选query函数进行数据筛选缺失值删除)seaborn可视化分面图(facet)seaborn使用Catplot可视化分面箱图(Faceted Boxplot)