2017-10-17 7 views
1

Seabornポイントプロットを使用してカテゴリプロットをプロットしたいが、隣接していないデータポイントはプロットのラインに接続しない。隣接していない点を補間して、隣接点が接続されているのと同じ方法で接続したいのですが、どのようにすればいいですか?Seabornポイントプロットの非隣接データポイントの接続

例:左と中央の画像では、青と緑の点をそれぞれ曲線で結ぶ必要がありますが、小さな部分に分割されています。左と中央の画像をちょうど右の画像と同様にプロットするにはどうすればよいですか?

enter image description here

fig, axs = plt.subplots(ncols=3, figsize=(10,5)) 
exp_methods = ['fMRI left', 'fMRI right', 'MEG'] 
for i in range(3): 
    experiment = exp_methods[i] 
    dataf = df[df['data']==experiment]  
    sns.pointplot(x='number_of_subjects', y='accuracy', hue='training_size', data=dataf, 
       capsize=0.2, size=6, aspect=0.75, ci=95, legend=False, ax=axs[i]) 
+0

私はその後海軍を使用しないことをお勧めします。 matplotlibにエラーバーがある通常の散布図または線図を使用してください。 – ImportanceOfBeingErnest

答えて

0

私は、失われたデータポイントが存在する場合に補間するためのオプションがあるとは思わない、ので、ラインが代わりに停止します。同じトピックの上にある2016年のThis questionは未回答です。

コメントで提案されているように代わりに、あなたはplt.errorbarを使用することができ、または静止手段とエラーバーをプロットするseabornを使用している間plt.plotを使用して、その後の行を追加します。

import seaborn as sns 

tips = sns.load_dataset('tips') 

# Create a gap in the data and plot it 
tips.loc[(tips['size'] == 4) & (tips['sex'] == 'Male'), 'size'] = 5 
sns.pointplot('size', 'total_bill', 'sex', tips, dodge=True) 

enter image description here

# Fill gap with manual line plot 
ax = sns.pointplot('size', 'total_bill', 'sex', tips, dodge=True, join=False) 

# Loop over the collections of point in the axes and the grouped data frame 
for points, (gender_name, gender_slice) in zip(ax.collections, tips.groupby('sex')): 
    # Retrieve the x axis positions for the points 
    x_coords = [coord[0] for coord in points.get_offsets()] 
    # Manually calculate the mean y-values to use with the line 
    means = gender_slice.groupby(['size']).mean()['total_bill'] 
    ax.plot(x_coords, means, lw=2) 

enter image description here

+0

ありがとうございました。私は別の質問がある、左と中の画像では、x軸上の2つの隣接する値の間のギャップは異なるはずですが、今は同じです、どうすれば変更できますか? –

+0

@emmaqqqあなたの問題を解決したら、この回答を受け入れてください(チェックマークをクリックしてください)。それから、私はこれの複製としてリンクした質問を閉じることができます。あなたのコメントのために、新しい質問を開き、ここでリンクしてください。 –

+0

@emmaqqq私は言うことを忘れました:あなたの新しい質問のために、他の人があなたの問題を再現しやすくするために、サンプルデータセットを含めるようにしてください。良いリソースは、Seabornサンプルデータセットです。ここで私の答えのコードを再利用してください。 –