2017-12-21 11 views
0

Ich möchte meine Boxplots gleichmäßig über die x-Achse verteilen. Der folgende Code generiert eine Figur, bei der die beiden Boxplots dicht beieinander liegen. In generate möchte ich, dass der Code die Boxplots gleichmäßig verteilt, unabhängig von der Anzahl der Boxplots (in diesem Beispiel gibt es nur zwei, aber im Allgemeinen gibt es viele).Boxplots gleichmäßig verteilt

import matplotlib.pyplot as plt 

statistic_dict = {0.40000000000000002: [0.36003616645322273, 0.40526649416305677, 0.46522159350924536], 0.20000000000000001: [0.11932912803730165, 0.23235825966896217, 0.12380728472472625]} 

def draw_boxplot(y_values, x_values, edge_color, fill_color): 
    bp = plt.boxplot(y_values, patch_artist=True, positions=x_values) 
    for element in ['boxes', 'whiskers', 'fliers', 'medians', 'caps']: 
     plt.setp(bp[element], color=edge_color) 
    plt.xlabel("x label ") 
    plt.ylabel("y label ") 
    plt.title("Title") 
    for patch in bp['boxes']: 
     patch.set(facecolor=fill_color) 


y_values = statistic_dict.values() 
x_values = statistic_dict.keys() 
draw_boxplot(y_values, x_values, "skyblue", "white") 
plt.savefig('fileName.png', bbox_inches='tight') 
plt.close() 

enter image description here

Antwort

1

Die boxplot wird nach seiner Erstellung nicht automatisch skaliert. Sie können das manuell tun. Es ist auch möglich, nachträglich einen benutzerdefinierten Rand hinzuzufügen.

plt.gca().autoscale() 
plt.gca().margins(x=0.2) 
+0

plt.gca() .autoscale() funktioniert! plt.gca(). Margins (x = 0.2) generiert Fehler, ValueError: mehr als zwei Argumente wurden angegeben – user58925

+0

Das wäre, weil Sie eine alte Version von Matplotlib verwenden. Ich kann keine gültige Lösung für eine ältere Version geben. – ImportanceOfBeingErnest

Verwandte Themen