2016-07-26 34 views
2

Mein Datensatz ist wie folgt: eine Python-Liste mit 6 Zahlen [23.948,30, 23.946,20, 23.961,20, 23.971,70, 23.956,30, 23.987,30]python/matplotlib/seaborn- boxplot auf einer x-Achse mit Datenpunkten

ich sie will um ein horizontales Boxplot über einer x-Achse mit [23855 und 24472] als Grenze der x-Achse (ohne y-Achse) zu sein.

Die X-Achse enthält auch Punkte in den Daten.

(so der Box-Plot und x-Achse die gleiche Skala)

Ich mag auch der Box-Plot die mittlere Zahl in Bild zeigen.

Jetzt kann ich nur die horizontale Box Plot bekommen. (Und ich möchte auch die x-Achse die ganze Zahl anstelle von xx + 2.394e zeigen)

Hier ist mein Code jetzt:

`

def box_plot(circ_list, wear_limit): 
    print circ_list 
    print wear_limit 

    fig1 = plt.figure() 
    plt.boxplot(circ_list, 0, 'rs', 0) 
    plt.show() 

`

enter image description here

Seaborn Code Ich versuche gerade:

def box_plot(circ_list, wear_limit): 
    print circ_list 
    print wear_limit 

    #fig1 = plt.figure() 
    #plt.boxplot(circ_list, 0, 'rs', 0) 
    #plt.show() 

    fig2 = plt.figure() 

    sns.set(style="ticks") 

    x = circ_list 
    y = [] 
    for i in range(0, len(circ_list)): 
     y.append(0) 

    f, (ax_box, ax_line) = plt.subplots(2, sharex=True, 
             gridspec_kw={"height_ratios": (.15, .85)}) 

    sns.boxplot(x, ax=ax_box) 
    sns.pointplot(x, ax=ax_line, ay=y) 

    ax_box.set(yticks=[]) 
    ax_line.set(yticks=[]) 
    sns.despine(ax=ax_line) 
    sns.despine(ax=ax_box, left=True) 

    cur_axes = plt.gca() 
    cur_axes.axes.get_yaxis().set_visible(False) 
    sns.plt.show() 

enter image description here

Antwort

2

Ich beantworten diese Frage in dem anderen Posten als gut, aber ich werde es hier nur für den Fall einfügen. Ich habe auch etwas hinzugefügt, das meiner Meinung nach näher an dem ist, was Sie erreichen möchten.

l = [23948.30, 23946.20, 23961.20, 23971.70, 23956.30, 23987.30] 

def box_plot(circ_list): 
    fig, ax = plt.subplots() 
    plt.boxplot(circ_list, 0, 'rs', 0, showmeans=True) 
    plt.ylim((0.28, 1.5)) 
    ax.set_yticks([]) 
    labels = ["{}".format(int(i)) for i in ax.get_xticks()] 
    ax.set_xticklabels(labels) 
    ax.spines['right'].set_color('none') 
    ax.spines['top'].set_color('none') 
    ax.spines['left'].set_color('none') 
    ax.spines['bottom'].set_position('center') 
    ax.spines['bottom'].set_color('none') 
    ax.xaxis.set_ticks_position('bottom') 
    plt.show() 

box_plot(l) 

Das Ergebnis:

Your box-plot

Do lassen Sie mich wissen, ob es entsprechen, was Sie suchen.

+0

Vielen Dank .. aber dieses Gefühl wie es hat sehr lange Barthaare. Können Sie bitte die X-Achse (mit Punkten auf der X-Achse) unter dem Boxplot hinzufügen? etwas ähnlich zu dem, was ich in Seaborn habe? – KKlalala

+0

Es hat sehr lange Whiskers, weil Ihre Daten eine hohe Varianz haben :). Um die X-Achse hinzuzufügen, entfernen Sie einfach diese Zeile aus dem Code: ax.spines ['bottom']. Set_color ('none') – Andreq

+0

Ich habe versucht, es funktioniert nicht gut. Lassen Sie mich ein wenig mehr über die Frage klären! – KKlalala