python
  • matplotlib
  • plot
  • seaborn
  • 2017-04-01 3 views 4 likes 
    4

    Ich habe Schwierigkeiten gehabt, Fehler zu meinen Plots hinzuzufügen, die ich in Python mit Seaborn erstellt habe.Fehlerbalken mit Seaborn und Stripplot

    Ich habe derzeit einen Datenrahmen in einem "csv" -Format;

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

    Die Datenrahmen hat diese Überschrift Format:

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

    ich dann for-Schleife in den verschiedenen TSM-Werte zu lesen:

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

    Und dann mich ich plotten schließlich geben:

    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 lot für bestimmte TSM ohne Fehlerbalken
    Plot for certain TSM without Error Bars

    Wenn ich dann die Fehlerbalken hinzuzufügen versuchen, ich mit nur einem Fehlerbalken in der Mitte jeder Teildatensatz am Ende:

    enter image description here

    wo Jede Quelle, Python und Matlab, hat tatsächlich eigene Fehler im Datenrahmen!

    Hat jemand irgendwelche Ideen! Danke vielmals!

    +1

    Zunächst müssen Sie angeben, wie Sie die Fehlerbalken in den Plot einfügen, * 'Ich versuche dann, Fehlerbalken hinzuzufügen' * könnte irgendetwas bedeuten. Zweitens würde die Verwendung eines [mcve] Ihre Chancen erhöhen, Hilfe dramatisch zu erhalten. Wenn es möglich ist, das Verhalten anhand einiger Mockup-Daten zu reproduzieren, geben Sie bitte den entsprechenden Code an. – ImportanceOfBeingErnest

    Antwort

    -1

    Plotting der Mittelwert + Fehler ist besser geeignet für sns.pointplot() als sns.stripplot(). Dies ist in der Seaborn Dokumentation angegeben:

    sns.pointplot anzeigen geschätzten Werte und Konfidenzintervalle Streudiagramm Glyphen verwenden. Ein Punktdiagramm repräsentiert eine Schätzung der zentralen Tendenz für eine numerische Variable durch die Position von Streudiagrammpunkten und gibt einen Hinweis auf die Unsicherheit um diesen Schätzwert unter Verwendung von Fehlerbalken.

    sns.stripplot Zeichnen Sie ein Streudiagramm, in dem eine Variable kategorisch ist. Ein Strip-Plot kann allein gezeichnet werden, aber es ist auch eine gute Ergänzung zu einem Box- oder Violin-Plot in Fällen, in denen Sie alle Beobachtungen zusammen mit einer Darstellung der zugrunde liegenden Verteilung zeigen möchten.

    Wenn Sie Zugang zu allen Beobachtungen haben, und nicht nur der Mittelwert + Fehler, was Sie wollen einfach erreicht werden durch:

    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

    können Sie die Art des Vertrauens ändern Intervall von dem Standard 95% mit dem ci Parameter:

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

    enter image description here

    In dem oben genannten, berechnet Seaborn die Messungen von Fehler und zentraler Tendenz. Etwas komplizierter ist es, wenn Sie diese bereits vorberechnen lassen, da es derzeit nicht möglich ist, sns.pointplot() mit einem vorberechneten Fehlerbalken zu verwenden.Ich füge die Fehler mit plt.errorbar() nach den Mitteln Plotten mit sns.pointplot():

    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

    Sie auch matplotlib direkt für das gesamte Grundstück nutzen könnten, wenn Sie die x-Positionen manuell, ähnlich wie this example liefern.

    Verwandte Themen