l'exemple de graphique à secteurs sur pandas tutoriel de traçage http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html génère ce qui suit figure:
avec ce code:
import matplotlib.pyplot as plt
plt.style.use('ggplot')
import numpy as np
np.random.seed(123456)
import pandas as pd
df = pd.DataFrame(3 * np.random.Rand(4, 2), index=['a', 'b', 'c', 'd'], columns=['x', 'y'])
f, axes = plt.subplots(1,2, figsize=(10,5))
for ax, col in Zip(axes, df.columns):
df[col].plot(kind='pie', autopct='%.2f', labels=df.index, ax=ax, title=col, fontsize=10)
ax.legend(loc=3)
plt.show()
Je veux supprimer l'étiquette de texte (a, b, c, d) des deux sous-tracés, car pour mon application ces étiquettes sont longues, donc je veux seulement les afficher dans la légende.
Après avoir lu ceci: Comment ajouter une légende au graphique à secteurs matplotlib? , je trouve un moyen avec matplotlib.pyplot.pie
mais le chiffre n'est pas aussi sophistiqué même si j'utilise toujours ggplot.
f, axes = plt.subplots(1,2, figsize=(10,5))
for ax, col in Zip(axes, df.columns):
patches, text, _ = ax.pie(df[col].values, autopct='%.2f')
ax.legend(patches, labels=df.index, loc='best')
Ma question est, existe-t-il un moyen de combiner les choses que je veux des deux côtés? pour être clair, je veux la fantaisie des pandas, mais retirez le texte des coins.
Je vous remercie
Vous pouvez désactiver les étiquettes dans le graphique, puis les définir dans l'appel à legend
:
df[col].plot(kind='pie', autopct='%.2f', labels=['','','',''], ax=ax, title=col, fontsize=10)
ax.legend(loc=3, labels=df.index)
ou
... labels=None ...