2017-06-16 117 views
2

我在Excel(2016)中创建了一些柱状图,通过使用python(3.5.3)pandas(0.20.1)创建表并使用xlsxwriter创建表格和图表0.9.6)。我便想相对于所有值的总和值的百分比每一列,这样的形象: Desired Output ChartXslxwriter柱状图数据标签百分比属性不起作用

根据我的Xslxwriter文件的理解,我只需要包括'data_labels':{'percentage': True}属性时,我系列添加到图表,正如我在下面的代码做:

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

然而,这个代码创建无标签的图表:Actual Output Chart

我误解了百分比数据标签属性的工作原理吗?

我一直在解决这个问题,创建一个单独的百分比列和使用该列的值​​属性标记,但如果有人能解释为什么我的代码不会产生我想要的输出,我将不胜感激它。

回答

1

我认为你只是碰撞了没有记录在XlsxWriter documentation中的Excel的限制。如果您打开Excel并手动创建图表,则会注意到数据标签的“百分比”选项不适用于条形图或柱形图(但适用于饼图或其他可能)。您需要通过使用单独的单元格(“来自单元格的值”)继续使用数据标签。我在XlsxWriter GitHub上打开了一个issue,试图让文档得到改进。

饼图与百分比数据标签选项Excel pie chart with percentage data label

没有百分比数据标签选项Excel column chart with no percentage data label

1

柱形图百分比属性用于数据标签的显示器上打开用于一系列的百分比。它主要用于饼图:

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