Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用seaborn'FacetGrid将箱线图排列为网格`_Python_Python 3.x_Seaborn_Boxplot - Fatal编程技术网

Python 使用seaborn'FacetGrid将箱线图排列为网格`

Python 使用seaborn'FacetGrid将箱线图排列为网格`,python,python-3.x,seaborn,boxplot,Python,Python 3.x,Seaborn,Boxplot,我有一个数据框,有三列特征、CV折叠、精度、网络。我想为每个网络绘制一个箱线图,根据特征和轴的CV折叠进行分组(参见示例图像) 因为我有8个不同的网络,所以我不希望它们都在一列或一行中,而是在网格中格式化(例如2x4)。此外,即使未启用sharex,x轴也仅在最底部的图形上标记 我该怎么做呢?您可以使用col\u wrap关键字参数来获取多行多列的绘图 要重复x轴标签,请使用ax.tick_params() 例如: import seaborn as sns, matplotlib.pyplo

我有一个数据框,有三列
特征、CV折叠、精度、网络
。我想为每个网络绘制一个箱线图,根据特征和轴的CV折叠进行分组(参见示例图像)

因为我有8个不同的网络,所以我不希望它们都在一列或一行中,而是在网格中格式化(例如2x4)。此外,即使未启用
sharex
,x轴也仅在最底部的图形上标记


我该怎么做呢?

您可以使用
col\u wrap
关键字参数来获取多行多列的绘图

要重复x轴标签,请使用
ax.tick_params()

例如:

import seaborn as sns, matplotlib.pyplot as plt

tips = sns.load_dataset('tips')
ordered_days = sorted(tips['day'].unique())
g = sns.FacetGrid(tips,col='day',col_order=ordered_days,col_wrap=2)
#                                               change this to 4 ^
g.map(sns.boxplot,'sex','total_bill',palette='muted')
for ax in g.axes.flatten(): 
    ax.tick_params(labelbottom=True)
plt.tight_layout()
plt.show()
结果:

非常有魅力,谢谢!有没有办法增加绘图行之间的边距?我如何仍然指定网络的顺序(在您的情况下是几天)?@Linda:请参阅已编辑的答案,它解决了所有三个问题。@Linda:这是我的错误,您没有为映射步骤指定数据。好的,nvm,在调用tight_layout后,我通过添加图例来修复它。非常感谢你的帮助!
import seaborn as sns, matplotlib.pyplot as plt

tips = sns.load_dataset('tips')
ordered_days = sorted(tips['day'].unique())
g = sns.FacetGrid(tips,col='day',col_order=ordered_days,col_wrap=2)
#                                               change this to 4 ^
g.map(sns.boxplot,'sex','total_bill',palette='muted')
for ax in g.axes.flatten(): 
    ax.tick_params(labelbottom=True)
plt.tight_layout()
plt.show()