web-dev-qa-db-fra.com

Comment définir la taille des étiquettes sur un graphique à secteurs dans python

Je veux avoir des étiquettes de petite taille sur un diagramme en morceaux python pour améliorer la visibilité, voici le code

import matplotlib.pyplot as plt

frac=[1.40 , 10.86 , 19.31 , 4.02 , 1.43 , 2.66 , 4.70 , 0.70 , 0.13 , 1.48, 32.96 , 1.11 , 13.30 , 5.86]
labels=['HO0900344', 'HO0900331', 'HO0900332', 'HO0900354', 
'HO0900358', 'HO0900374', 'HO0900372', 'HO0900373', 
'HO0900371', 'HO0900370', 'HO0900369', 'HO0900356', 
'HO0900353', 'HO0900343']

fig = plt.figure(1, figsize=(6,6))
ax = fig.add_subplot(111)
ax.axis('equal')
colors=('b', 'g', 'r', 'c', 'm', 'y', 'burlywood', 'w')
ax.pie(frac,colors=colors ,labels=labels, autopct='%1.1f%%')
plt.show()

Merci et bravo

35
Piccolo

Il existe plusieurs façons de modifier la taille de police des étiquettes.

Vous pouvez modifier dynamiquement les paramètres rc . Ajoutez ce qui suit en haut de votre script:

import matplotlib as mpl
mpl.rcParams['font.size'] = 9.0

Ou vous pouvez modifier les étiquettes après leur création. Quand vous appelez ax.pie it retourne un Tuple de (correctifs, textes, autotextes). Par exemple, modifiez vos dernières lignes de code comme suit:

patches, texts, autotexts = ax.pie(frac, colors=colors, labels=labels, autopct='%1.1f%%')
texts[0].set_fontsize(4)
plt.show()
52
Gary Kerr

Le moyen le plus simple de modifier la taille de la police sur un graphique à secteurs est directement via textprops argument dans la fonction pie(). En utilisant le code ci-dessus, ajoutez-le comme suit:

ax.pie(frac, colors=colors ,labels=labels, 
       autopct='%1.1f%%', textprops={'fontsize': 14})

De cette façon, vous pouvez simplement passer dans un dictionnaire avec la taille de police souhaitée (par exemple, 14). Pas besoin de jouer avec rcParams ou de renvoyer des valeurs de l'appel de fonction.

54
TheMuellenator