Python Seaborn FaceGrid col_wrap(宽到长)绘图问题

Python Seaborn FaceGrid col_wrap(宽到长)绘图问题,python,pandas,seaborn,Python,Pandas,Seaborn,我正在尝试使用Seaborn的FaceGrid和col\u wrap绘制每一行(在宽表中) 首先,我将宽转换为长: --stack()将宽数据存储到一个系列中,s --使用获取级别值 --将序列附加到数据帧 FacetGrid只绘制第一个绘图 dt1 = pd.DataFrame({'s1':[0,1,2,3,4], 's2':[4,2,3,6,7], 's3':[6,7,3,4,7] }) def fct(data): #toy model dataframe #dt1.ind

我正在尝试使用Seaborn的FaceGrid和
col\u wrap
绘制每一行(在宽表中)

首先,我将宽转换为长:
--
stack()
将宽数据存储到一个系列中,
s

--使用
获取级别值

--将序列附加到数据帧

FacetGrid只绘制第一个绘图

dt1 = pd.DataFrame({'s1':[0,1,2,3,4], 's2':[4,2,3,6,7], 's3':[6,7,3,4,7] })
def fct(data):
    #toy model dataframe
    #dt1.index.names = ['ind']
    dt = data.stack()
    dt.index.names = ['i','s']
    ind = pd.Series( dt.index.get_level_values(0).values )
    sub = pd.Series( dt.index.get_level_values(1).values )
    dtt = pd.DataFrame( ind , columns=['ind'])
    dtt['sub'] = sub
    dtt['ind'] = ind
    dtt['dt'] = dt.values
    #dt.reindex(columns='v')
    print ( 'dt ', dtt.describe)
    g = sns.FacetGrid( dtt, col='sub', col_wrap=1, size=2, ylim=(0, 10) )
    g.map( sns.pointplot, 'ind', 'dt', color=".3", ci=None );
`


我不确定是什么原因造成的,但你应该能够做到
row='sub'
,得到你想要的东西


顺便说一下,您可以使用
factorplot
kind='point'
来绘制此图,而无需直接使用
FacetGrid
,这可能会更简单。

我猜
col\u wrap=1
不起作用,因为这与说您希望按行而不是按列刻面网格是一样的。为此,您需要使用
参数

您还可以查看相关的或查看,以了解有关
factorplot
的更多信息

正如@mwaskom所说,要获得想要的效果,您应该使用
row='sub'


编辑:

我对col\u wrap=1有相同的问题,但对col\u wrap=2效果很好。