web-dev-qa-db-fra.com

graphique à barres matplotlib: espacez les barres

Comment puis-je augmenter l'espace entre chaque barre avec les diagrammes à barres matplotlib, car ils continuent de les entasser au centre . enter image description here (c'est ce à quoi il ressemble actuellement)

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
def ww(self):#wrongwords text file

    with open("wrongWords.txt") as file:
        array1 = []
        array2 = [] 
        for element in file:
            array1.append(element)

        x=array1[0]
    s = x.replace(')(', '),(') #removes the quote marks from csv file
    print(s)
    my_list = ast.literal_eval(s)
    print(my_list)
    my_dict = {}

    for item in my_list:
        my_dict[item[2]] = my_dict.get(item[2], 0) + 1

    plt.bar(range(len(my_dict)), my_dict.values(), align='center')
    plt.xticks(range(len(my_dict)), my_dict.keys())

    plt.show()
15
Smith

Essayez de remplacer

plt.bar(range(len(my_dict)), my_dict.values(), align='center')

avec

plt.figure(figsize=(20, 3))  # width:20, height:3
plt.bar(range(len(my_dict)), my_dict.values(), align='Edge', width=0.3)
19
swatchai

Il y a 2 façons d'augmenter l'espace entre les barres Pour référence, voici les fonctions de tracé

plt.bar(x, height, width=0.8, bottom=None, *, align='center', data=None, **kwargs)

Diminue la largeur de la barre

La fonction de tracé a un paramètre de largeur qui contrôle la largeur de la barre. Si vous diminuez la largeur, l'espace entre les barres se réduira automatiquement. La largeur pour vous est définie sur 0,8 par défaut.

width = 0.5

Redimensionnez l'axe des x pour que les barres soient plus éloignées les unes des autres

Si vous voulez garder la largeur constante, vous devrez espacer où les barres sont placées sur l'axe des x. Vous pouvez utiliser n'importe quel paramètre de mise à l'échelle. Par exemple

x = (range(len(my_dict)))
new_x = [2*i for i in x]

# you might have to increase the size of the figure
plt.figure(figsize=(20, 3))  # width:10, height:8

plt.bar(new_x, my_dict.values(), align='center', width=0.8)
5
ShikharDua