1

我正在尝试使用 Seaborn 的 FacetGrid 和col_wrap.

首先,我将宽转换为长:
-stack()将宽数据转换为系列,s.
-- 使用get_level_values
-- 将系列附加到数据框

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 );

`

在此处输入图像描述

4

1 回答 1

0

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

顺便说一句,您可以使用factorplotwithkind='point'来绘制此图,而无需FacetGrid直接使用,它可能会更容易。

于 2014-04-24T21:58:45.863 回答