2017-09-11 2 views
0

Ich möchte, dass zwischen den Balken in meinem Diagramm keine Leerzeichen stehen. Ich habe diese Frage vor der Veröffentlichung durchsucht, und obwohl es eine Vielzahl von Antworten gibt, hat keine Auswirkung auf mein Diagramm. Ich nehme an, ich mache etwas falsch, aber ich kann nicht herausfinden, wie es funktioniert.Entfernen Sie die Lücken zwischen den Balken im Balkendiagramm

Ich habe versucht, diese beiden Verfahren und die Zwischenräume zwischen der Bar blieb unverändert:

plt.axis('tight') 

    bin = np.arange(my_list) 
    plt.xlim([0, bin.size]) 

Hier ist mein Code:

my_list = [2355, 2259, 683] 
plt.rcdefaults() 
fig, ax = plt.subplots() 
width = .35 

Kitchen = ("Cucumber", "Legacy", "Monkey") 
y_pos = np.arange(len(Kitchen)) 

barlist = ax.bar(y_pos, my_list, width, align='center', ecolor='black') 
barlist[0].set_color('dodgerblue') 
barlist[1].set_color('orangered') 
barlist[2].set_color('khaki') 

def autolabel(rects): 
    for rect in rects: 
     height = rect.get_height() 
     ax.text(rect.get_x() + rect.get_width()/2., 1*height, 
      '%d' % int(height), 
      ha='center', va='bottom') 

autolabel(barlist) 
plt.title('My Bar Chart') 
plt.xlabel("Kitchen") 
plt.ylabel("Shoes") 
plt.xticks(y_pos,("Cucumber", "Legacy", "Monkey",)) 
plt.show() 

My Chart

Antwort

1

konnte ich es, eine Lösung für diese Frage Figur. Ich füge den Teil fett hinzu, und das erlaubte mir schließlich, die Größe des Diagramms anzupassen, um den überschüssigen Leerraum loszuwerden.

my_list = [2355, 2259, 683] 
plt.rcdefaults() 
fig, ax = plt.subplots(**figsize=(3, 3.5)**) 
width = .35 
0

Die treffend Variable mit dem Namen width ist, was Sie müssen ändern. Sie können Farben auch als zukünftige Referenz zur Verfügung stellen, falls Ihre Liste ein bisschen lang wird.

import matplotlib.pyplot as plt 
    import numpy as np 

    my_list = [2355, 2259, 683] 
    plt.rcdefaults() 
    fig, ax = plt.subplots() 

    N = len(my_list) 
    ind = np.arange(N) 
    width = 0.99 

    ## the bars                                                   
    colors = ['dodgerblue','orangered','khaki'] 
    barlist = ax.bar(ind, my_list, width, color=colors) 

    def autolabel(rects): 
     for rect in rects: 
      height = rect.get_height() 
      ax.text(rect.get_x() + rect.get_width()/2., 1*height, 
       '%d' % int(height), 
       ha='center', va='bottom') 

    autolabel(barlist) 

    # axes and labels                                                 
    xtick_marks = ["Cucumber", "Legacy", "Monkey"] 
    xtick_names = ax.set_xticklabels(xtick_marks) 
    ax.set_xticks(ind) 
    xbuffer = 3 
    ax.set_xlim(-xbuffer,len(ind)-1+xbuffer) 

    plt.show() 

Einstellen der width-1,0 ist genau kein Platz, aber es könnte bei 0,99 optisch ansprechender sein.

Wenn Sie den xlim so einstellen, dass er mit einem Puffer skaliert, können Sie je nach Vorliebe ein- oder auszoomen.

squished-scaled-bar-plot

+0

Das ist eine Möglichkeit, das Problem zu lösen, aber das ist nicht meine gewünschte Ausgabe. Ich möchte, dass die Bar auf einer schmalen Breite bleibt, und ich möchte auch, dass die Lücken zwischen ihnen verschwunden sind. Gibt es einen Weg dorthin, kann ich den Graphen schmal machen, um die Lücken zu füllen? – sd1272

+0

Durch Verwendung eines Puffers im 'xlim' können Sie die Größe Ihrer Balken in Bezug auf den Leerraum skalieren. Im Grunde ist es ein Zoom. Ich habe den Code so geändert, dass er dies widerspiegelt - hoffentlich suchen Sie danach. – ajrichards

Verwandte Themen