2009-12-16 11 views

Répondre

10

couleurs par défaut globales, des largeurs de ligne, tailles, etc., peuvent être réglées avec le dictionnaire rcParams:

import matplotlib 
matplotlib.rcParams['text.color'] = 'r' 
matplotlib.rcParams['lines.linewidth'] = 2 

Une liste complète des params se trouve here.

Vous pouvez également régler la largeur de ligne après vous dessinez votre diagramme circulaire:

from matplotlib import pyplot as plt 
fig = plt.figure(figsize=(8,8)) 
pieWedgesCollection = plt.pie([10,20,50,20],labels=("one","two","three","four"),colors=("b","g","r","y"))[0] #returns a list of matplotlib.patches.Wedge objects 
pieWedgesCollection[0].set_lw(4) #adjust the line width of the first one. 

Malheureusement, je ne peux pas trouver un moyen de régler la couleur de la police ou la taille du diagramme circulaire étiquettes f de la méthode tarte ou de l'objet Wedge. En regardant dans la source de axes.py (lignes 4606 sur matplotlib 99.1), ils sont créés en utilisant la méthode Axes.text. Cette méthode peut prendre un argument de couleur et de taille, mais ce n'est pas actuellement utilisé. Sans éditer la source, votre seule option peut être de le faire globalement comme décrit ci-dessus.

+0

Merci, qui est le plus utile. Un ajout: Pour définir la largeur de ligne de la cale réelle, vous devez utiliser (pour le premier coin): pieWedgesCollection [0] [0] .set_linewidth (0) – Sam

2
matplotlib.rcParams['font.size'] = 24 

ne modifie le diagramme circulaire étiquettes taille de la police

15

Afficher un peu tard pour le parti, mais j'ai rencontré ce problème et ne voulait pas modifier mes rcParams.

Vous pouvez redimensionner le texte pour les étiquettes ou les pourcentages automatiques en conservant le texte renvoyé à partir de la création de votre graphique à secteurs et en les modifiant de manière appropriée à l'aide de matplotlib.font_manager.

Vous pouvez en savoir plus sur l'utilisation du matplotlib.font_manager ici: http://matplotlib.sourceforge.net/api/font_manager_api.html

Construit dans les tailles de police sont répertoriés dans le api; "size: Soit une valeur relative de 'xx-small', 'x-small', 'small', 'medium', 'large', 'x-large', 'xx-large' ou une taille de police absolue, par exemple 12"

from matplotlib import pyplot as plt 
from matplotlib import font_manager as fm 

fig = plt.figure(1, figsize=(6,6)) 
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8]) 
plt.title('Raining Hogs and Dogs') 

labels = 'Frogs', 'Hogs', 'Dogs', 'Logs' 
fracs = [15,30,45, 10] 

patches, texts, autotexts = ax.pie(fracs, labels=labels, autopct='%1.1f%%') 

proptease = fm.FontProperties() 
proptease.set_size('xx-small') 
plt.setp(autotexts, fontproperties=proptease) 
plt.setp(texts, fontproperties=proptease) 

plt.show() 

alt text

+0

Cela fonctionne très bien, merci. Existe-t-il une manière similaire de changer le poids de la ligne entre les tranches? –