【发布时间】:2017-03-31 02:20:22
【问题描述】:
我有一个带有 6 个选项卡(工作表)的 excel 文件。每个工作表具有相同的结构并包含两列 - 第 1 列包含品牌名称,第 2 列包含与每个品牌对应的值。对于 excel 文件中的每张表,我想制作一个饼图,显示每个品牌的份额百分比。
可用于运行脚本的示例 xls 文件是 here
我编写的代码非常简单,可以生成图表。问题是图表的图例采用序列号名称而不是品牌名称。
import pandas as pd
import xlsxwriter as excel
df = pd.read_excel("/Users/jack/Documents/python-pptx/filename", sheetname=None)
workbook = excel.Workbook('/Users/jack/Documents/python-pptx/chart_pie.xlsx')
for sheetname, data in df.iteritems():
if len(data) > 0:
worksheet = workbook.add_worksheet(sheetname)
chart = workbook.add_chart({'type': 'pie'})
worksheet.write_column('A1', data['Brand'])
worksheet.write_column('B1', data['Share_of_interactions'])
chart.add_series({'categories': '='+sheetname+'!$A$1:$A$'+str(len(data)),
'values': '='+sheetname+'!$B$1:$B$'+str(len(data)),
'name': '='+sheetname+'!$A$1:$A$'+str(len(data))})
## insert chart into the worksheet
worksheet.insert_chart('C3', chart)
## Close the workbook
workbook.close()
这是图表的屏幕截图:
如果您注意到图表中的图例显示为 1、2、3 ..。 . 7.它实际上应该说品牌名称。如xlsxwriter - http://xlsxwriter.readthedocs.io/chart.html 的文档中所述,我已将名称参数添加到chart.add_series。任何帮助将非常感激。
【问题讨论】:
-
介意分享您的数据框样本
df? -
@JulienMarrec 让我把它放在一起分享。
-
我已经分享了一个 Excel 文件的链接。您可以使用它来运行脚本。
-
@JulienMarrec 运气好吗?
标签: python excel pandas xlsxwriter