2017-02-13 9 views
0

プロットを使ってバイオリンプロットを描くためのpython関数を作成しました。そのためのコードは次のとおりです。python関数とプロットのヴァイオリンプロット

def print_violin_plot(data1,data2,type1,type2,fig_title): 
     data = pd.DataFrame(columns=('Group', 'Number')) 
     for i in data1: 
      x = pd.DataFrame({'Group' : [type1], 
         'Number' : [i],}) 
     data = data.append(x, ignore_index=True) 
     for i in data2: 
      x = pd.DataFrame({'Group' : [type2], 
         'Number' : [i],}) 
     data = data.append(x, ignore_index=True) 

     fig = FF.create_violin(data, data_header='Number',  
     group_header='Group', height=500, width=800, title= fig_title) 
     py.iplot(fig, filename="fig_title") 

私はその後、

print_violin_plot(eng_t['grade'],noneng_t['grade'],'English 
    Speaking','Non-English Speaking', 'Grades') 

関数を呼び出す関数はエラーなしに、細かい動作しますが、私は、任意の出力を参照してくださいいけません。どうして?

答えて

0

ときdata1をループとdata2あなたは変数xpd.DataFrameの新しいインスタンスを割り当てて、あなたがxを上書きする各反復で。 pd.DataFrameのインスタンスを追加する場合は、data.append(x)をfor-loopに移動する必要があります。また、data.append()はNoneを返します。dataオブジェクトで動作するメソッドなので、data = data.append(..)の結果はdata == Noneとなります。あなたのコードは、明確にするため

data = pd.DataFrame(columns=('Group', 'Number')) 
for i in data1: 
     x = pd.DataFrame({'Group' : [type1], 
        'Number' : [i],}) 
for i in data2: 
     x = pd.DataFrame({'Group' : [type2], 
        'Number' : [i],}) 
     data.append(x, ignore_index=True) 

次のようになり、私は pg.DataFrame手段または何見当がつかないことを言うが、私は上記に書いたことは、あなたのコード内の欠陥確かである必要があります。私は、 pg.DataFrameインスタンスがメソッドをサポートし、 listsのように動作すると仮定しました。

関連する問題