Python Seaborn FaceGrid绘制两个相邻的不同y轴

Python Seaborn FaceGrid绘制两个相邻的不同y轴,python,seaborn,Python,Seaborn,这是可行的,但我相信一定有办法通过FacetGrid做到这一点。我在想象某种参数,你可以在其中访问图表在网格上的位置。或者这被认为是冗余的,使用plt。子地块是访问网格轴的方式 fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2) sns.catplot(x='not.fully.paid', y='int.rate', kind='box', data=loans, ax=ax1) sns.catplot(x='not.fully.paid', y=

这是可行的,但我相信一定有办法通过FacetGrid做到这一点。我在想象某种参数,你可以在其中访问图表在网格上的位置。或者这被认为是冗余的,使用plt。子地块是访问网格轴的方式

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
sns.catplot(x='not.fully.paid', y='int.rate', kind='box', data=loans, ax=ax1)
sns.catplot(x='not.fully.paid', y='fico', kind='box', data=loans, ax=ax2)
即使我调用这个,它也会在显示器上打印出来

<seaborn.axisgrid.FacetGrid at 0x1a314b6c50>


当然,我得到了两个紧挨着的CATPlot,但下面是一个空的FaceGrid

这段代码居然能正常工作,真是令人惊讶
sns.catplot()
设计用于打印到
FaceGrid
上,而不是按您使用它的方式使用

我认为您应该直接使用
sns.boxplot()

fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2)
sns.boxplot(x='not.fully.paid', y='int.rate', kind='box', data=loans, ax=ax1)
sns.boxplot(x='not.fully.paid', y='fico', kind='box', data=loans, ax=ax2)
如果您真的想使用catplot,则必须转换数据帧,使所有y值都位于一列中,并使用一个额外的类别列指示值的类型(int.rate/fico),然后调用:

sns.catplot(x='not.fully.paid', y='<values column>', col='<category column>', kind='box', data=loans)
sns.catplot(x='not.fully.paid',y=''',col=''',kind='box',data=loans)

seaborn将自动选择正确的子地块,以适应类别列中的唯一类别数。

这确实消除了空的FacetGrid,但是FacetGrid是否有一种方法可以传递不同的绘图函数以及与这些函数相关联的参数,这与PairGrid支持map_diag和map_upper的方式更为相似,
FaceGrid
设计用于将您的数据分为几个类别,并使用相同的绘图功能在所有类别中绘制相同的关系,以便于比较。啊,能够向FaceGrid传递一个Y值列表会很酷,但感谢您对此进行清理