2017-06-16 1 views
2

Je crée des tableaux à colonnes dans Excel (2016) pour un rapport en créant des tables avec python (3.5.3) pandas (0.20.1) et en créant des tableaux et des graphiques avec xlsxwriter (0.9.6). Je voudrais étiqueter chaque colonne avec le pourcentage de la valeur par rapport à la somme de toutes les valeurs, comme dans cette image: Desired Output ChartXslxwriter colonne graphique données étiquettes pourcentage propriété ne fonctionne pas

Sur la base de ma compréhension de la documentation Xslxwriter, je ne contenir que la propriété 'data_labels':{'percentage': True} quand je ajouter une série à un graphique, comme je le fais dans le code suivant:

df = pandas.DataFrame(data=[1,2,3,4,5],index=['a','b','c','d','e']) 
writer = pandas.ExcelWriter('C:/Users/Name_A_Place/sandbox.xlsx') 
df.to_excel(writer) 
wrkbk = writer.book 
wrksht = writer.sheets['Sheet1'] 
chrt = wrkbk.add_chart({'type':'column'}) 

chrt.add_series({'categories': '=Sheet1!A2:A6', 
       'values': '=Sheet1!B2:B6', 
       'data_labels': {'percentage':True, 
           'font': {'rotation':-45}}, 
       }) 

wrksht.insert_chart("E1",chrt) 
writer.save() 

Cependant, ce code crée un graphique sans étiquettes: Actual Output Chart. Suis-je en train de mal comprendre le fonctionnement de la propriété d'étiquette de données en%? J'ai travaillé autour de ce problème en créant une colonne de pourcentage et un libellé distincts avec la propriété 'data_labels': {'value': True} en utilisant les valeurs de cette colonne, mais si quelqu'un pouvait expliquer pourquoi mon code n'a pas produit la sortie que je souhaitais, j'apprécierais il.

Répondre

1

Je pense que vous venez de vous heurter aux limitations d'Excel qui ne sont pas clairement documentées dans le XlsxWriter documentation. Si vous ouvrez Excel et créez les graphiques à la main, vous remarquerez que l'option «pourcentage» pour les étiquettes de données n'est pas présente pour les diagrammes à barres ou à colonnes (mais pour le graphique et peut-être d'autres). Vous devrez continuer à utiliser les étiquettes de données en utilisant des cellules séparées ("valeur provenant des cellules"). J'ai ouvert un issue sur XlsxWriter GitHub pour essayer d'obtenir les documents améliorés.

Un diagramme circulaire avec option d'étiquette de données de pourcentage Excel pie chart with percentage data label

Un graphique à colonnes sans option d'étiquette de données de pourcentage Excel column chart with no percentage data label

1

Le est utilisé propriété de pourcentage pour activer l'affichage des étiquettes de données en pourcentage pour une série . Il est principalement utilisé pour les camemberts:

import pandas as pd 
df = pd.DataFrame(data=[1,2,3,4,5],index=['a','b','c','d','e']) 
writer = pd.ExcelWriter('C:/Users/Name_A_Place/sandbox.xlsx') 
df.to_excel(writer) 
wrkbk = writer.book 
wrksht = writer.sheets['Sheet1'] 
chrt = wrkbk.add_chart({'type':'pie'}) 

chrt.add_series({'categories': '=Sheet1!A2:A6', 
       'values': '=Sheet1!B2:B6', 
       'data_labels': {'percentage':True, 
           'font': {'rotation':-45}}, 
       }) 

wrksht.insert_chart("E1",chrt) 
writer.save()