2015-05-05 20 views
7

http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html aşağıdaki şekle üretir öğretici komplo pandalar hakkında pasta grafik örneği:pandalar pasta grafik arsa kama üzerindeki etiket metni kaldırmak

enter image description here

bu kodla: istediğim

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() 

metin etiketini (a, b, c, d) her iki alt noktadan kaldırmak için, çünkü bu uygulama için etiketler uzun, bu yüzden sadece bunları efsanede göstermek istiyorum.

Bunu okuduktan sonra: How to add a legend to matplotlib pie chart?, matplotlib.pyplot.pie ile bir yol buluyorum, ancak hala ggplot kullanıyorum bile şekil fantezi değil.

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') 

enter image description here

Sorum hem taraftan istediğim şeyleri birleştirebilirsiniz bir yol var, nedir? Net olmak gerekirse, pandaların fanciness olmasını istiyorum, ancak metni takaslardan kaldırıyorum.

teşekkür ederiz

cevap

20

Grafikte etiketleri kapatmak ve ardından legend için çağrı içinde bunları tanımlayabilirsiniz:

df[col].plot(kind='pie', autopct='%.2f', labels=['','','',''], ax=ax, title=col, fontsize=10) 
ax.legend(loc=3, labels=df.index) 

veya

... labels=None ... 

enter image description here