2017-04-01 1 views
4

Seaborn을 사용하여 파이썬에서 만든 플롯에 오류 막대를 추가하는 데 어려움이 있습니다.Seaborn과 Stripplot이있는 오류 막대

현재 'csv'형식의 데이터 프레임이 있습니다.

TSM = ['001', '002', '003', '004', '010', '011', '012', 
    '013', '016', '017', '101', '102', '104', '105', '106'] 

for x in TSM: 
    tsm = x 

을 그리고 마지막으로 내가 나에게주는 플롯 :

Run,TSMX_Value,TSMX_Error,TSMX+1_Value,TSMX+1_Error,Source 

그때 다른 TSM의 값을 읽어 for 루프를 사용

TSMdatabase = 'TSMvsRunmaster.csv'; 
tsmdf = pd.read_csv(TSMdatabase, sep=','); 

Dataframe이 제목 형식이 있습니다 :

plt.figure() 
sns.set_style("darkgrid") 
ax = sns.stripplot(x="Run", y='TSM'+str(tsm)+'_Value', hue="Source", data=tsmdf, 
        jitter=True, palette="Set2", split=True) 
plt.xticks(rotation=40) 
plt.title('Run TSM'+str(tsm)+' Comparison') 
plt.show() 

p

enter image description here

: 다음 오차 막대를 추가하려고하면
Plot for certain TSM without Error Bars

, 나는 각 하위 데이터 세트의 중간에 하나의 오류 바 결국 오류 바없이 특정 TSM에 대한 많은 각 소스, Python 및 Matlab은 실제로 데이터 프레임에 자체 오류가 있습니다!

아무도 아이디어가 있습니까? 참으로 대단히 감사합니다!

+1

먼저 오류 막대를 플롯에 배치하는 방법을 포함시켜야합니다. * '오류 막대를 추가하려고합니다.'*는 아무 의미가 있습니다. 둘째, [mcve]를 사용하면 도움을 크게 얻을 확률이 높아집니다. 따라서 모형을 사용하여 행동을 재연하는 것이 가능하다면 해당 코드를 제공하십시오. – ImportanceOfBeingErnest

답변

-1

sns.pointplot()에 대해서는 평균 + 오류를 나타내는 것이 sns.stripplot()보다 적합합니다. 이것은 시본 설명서에 표시됩니다 :

sns.pointplot 표시 점 추정과 신뢰 구간은 산포도의 상형 문자를 사용하여. 점 플롯은 산점도 점의 위치에 따른 숫자 변수의 중심 경향의 추정치를 나타내며 오차 막대를 사용하여 그 추정치 주변의 불확실성을 나타냅니다.

sns.stripplot 하나의 변수가 범주 형인 scatterplot을 그립니다. 스트립 플롯은 독자적으로 그려 질 수 있지만 모든 관측치를 기본 분포의 일부 표현과 함께 표시하려는 경우 상자 또는 바이올린 플롯에 대한 보완책이기도합니다. 당신이하는 것만으로 달성 할 수 원하는

모든 관찰에 액세스 할 수있는 경우뿐 아니라 평균 + 오류 :

import seaborn as sns 
%matplotlib inline 

tips = sns.load_dataset('tips') 
sns.pointplot('sex', 'tip', hue='smoker', 
    data=tips, dodge=True, join=False) 

enter image description here

당신은 신뢰의 유형을 변경할 수 있습니다 간격은 ci 매개 변수가있는 기본값 95 %에서부터 :

sns.pointplot('sex', 'tip', hue='smoker', 
    data=tips, dodge=True, join=False, ci='sd') 

enter image description here

상기에서, Seaborn은 오차 및 중심 경향의 측정을 계산했다. 사전 계산 된 오류 막대와 함께 sns.pointplot()을 사용할 수 없기 때문에 미리 계산 된 값이 이미있는 경우 조금 까다 롭습니다.나는 sns.pointplot()를 사용하는 방법을 음모를 꾸미고 후 plt.errorbar()를 사용하여 오류를 추가 : 또한 전체 줄거리에 대한 matplotlib에서 직접 사용할 수

ax = sns.pointplot('sex', 'tip', hue='smoker', 
    data=tips, dodge=True, join=False, ci=None) 

# Find the x,y coordinates for each point 
x_coords = [] 
y_coords = [] 
for point_pair in ax.collections: 
    for x, y in point_pair.get_offsets(): 
     x_coords.append(x) 
     y_coords.append(y) 

# Calculate the type of error to plot as the error bars 
# Make sure the order is the same as the points were looped over 
errors = tips.groupby(['smoker', 'sex']).std()['tip'] 
colors = ['steelblue']*2 + ['coral']*2 
ax.errorbar(x_coords, y_coords, yerr=errors, 
    ecolor=colors, fmt=' ', zorder=-1) 

enter image description here

, 당신은 수동으로 this example 유사한 X-위치를 제공합니다.

관련 문제