2017-09-11 3 views
0

Je souhaite qu'il n'y ait pas d'espaces entre les barres de mon graphique. J'ai cherché cette question avant de poster, et bien qu'il y ait une variété de réponses, aucune n'a d'effet sur mon graphique. Je suppose que je fais quelque chose de mal, mais je n'arrive pas à comprendre comment le faire fonctionner.Supprimer les espaces entre les barres dans l'histogramme

J'ai essayé ces deux méthodes et les espaces entre la barre est restée inchangée:

plt.axis('tight') 

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

Voici mon 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

Répondre

1

j'ai pu comprendre une solution à cette question. J'ajoute la partie en gras, et cela m'a finalement permis d'ajuster la taille du graphique pour me débarrasser de l'espace blanc en excès. C'est une façon de résoudre le problème, mais ce n'est pas mon résultat souhaité.

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

La variable porte bien son nom width est ce que vous devez modifier. Vous pouvez également fournir des couleurs comme référence future au cas où votre liste serait un peu longue.

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() 

Réglage du width à 1,0 est exactement pas d'espace, mais il pourrait être visuellement plus attrayant à 0,99.

Régler le xlim à l'échelle avec un tampon vous permettra d'effectuer un zoom avant ou arrière selon vos préférences.

squished-scaled-bar-plot

+0

Je veux que le bar reste à une largeur étroite, et je veux aussi que les espaces entre les deux disparaissent. Y a-t-il un moyen de rendre le graphique étroit pour combler les lacunes? – sd1272

+0

En utilisant un tampon dans 'xlim', vous pouvez redimensionner la taille de vos barres par rapport à l'espace blanc. Essentiellement c'est un zoom. J'ai modifié le code pour refléter cela - j'espère que c'est ce que vous cherchez. – ajrichards