Diagramme en barres en Python

Bonjour,

je cherche à faire un diagramme en barres en Python. J'importe le module nécessaire :
import matplotlib.pyplot as plt

J'ai aussi importé random pour fabriquer des données rapidement. Je construis des données :
n = 100       
x = [k for k in range(n)]
y = [random.randint(0,10) for k in range(n)]

Puis je trace :
width = 0.8
plt.bar(x, y, width, color='r')
plt.show()  

Cela me fait ce que je veux, mais je trouve que la valeur de width est trop importante. Sur mon exemple, ce n'est pas très dur à trouver par tâtonnement ce que je veux, mais si je mets ensuite $n = 10$ (pour n'avoir que 10 données), j'ai des grosses barres que je trouve moche. En résumé, je ne comprends pas comment régler cette largeur de barre. Et j'aimerais bien pouvoir la régler pour toutes les valeurs de $n$

Réponses

  • Je fais remonter le sujet au cas où quelqu'un ait une réponse...
  • Bonjour,

    Comme ça ?
    import numpy as np
    import matplotlib.pyplot as plt
    
    n = 10     
    x = range(n)
    y = np.random.randint(10,size=n)
    plt.figure()
    plt.bar(x, y, width = 0.4, color='r')
    plt.show()
    
    Cordialement,

    Rescassol
  • Effectivement, avec 0.4, c'est plus joli. Mais ce qui m'embête, c'est que j'aurais sans doute su trouver cette valeur en tâtonnant, mais je ne comprends pas comment la trouver à 'l'avance', typiquement en mettant quelque chose comme width = 1/n
  • Bonjour,

    encore une question sur ce module matplotlib.pyplot. J'ai fait un graphe dont les axes sont gradués tous deux par des entiers. Précisément, sont affichés 0, 5, 10, 15, 20, 25 sur chacun des axes.

    Je voudrais afficher a, b, c, d, etc sur chacun des axes. J'imagine qu'il faut renommer les graduations d'axes mais je ne sais pas faire. Est-ce quelqu'un a déjà voulu faire cela ?
Connectez-vous ou Inscrivez-vous pour répondre.