【问题标题】:Xslxwriter column chart data labels percentage property not workingXlsxwriter 柱形图数据标签百分比属性不起作用
【发布时间】:2023-04-02 20:02:01
【问题描述】:

我正在 Excel (2016) 中为报表创建一些柱形图,方法是使用 python (3.5.3) pandas(0.20.1) 创建表格并使用 xlsxwriter (0.9.6) 创建表格和图表。我想用值相对于所有值之和的百分比来标记每一列,如下图所示: Desired Output Chart

根据我对 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

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

我一直在通过创建一个单独的百分比列并使用该列中的值使用'data_labels': {'value': True} 属性标记来解决此问题,但如果有人能解释为什么我的代码没有产生我想要的输出,我将不胜感激它。

【问题讨论】:

    标签: python excel pandas charts xlsxwriter


    【解决方案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()
    

    【讨论】:

      【解决方案2】:

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

      带有百分比数据标签选项的饼图

      没有百分比数据标签选项的柱形图

      【讨论】:

        猜你喜欢
        • 2015-04-06
        • 2018-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-18
        • 2023-03-31
        • 1970-01-01
        • 2021-09-12
        相关资源
        最近更新 更多