在python中创建饼图

时间:2017-09-14 19:39:38

标签: python excel charts pie-chart xlsxwriter

我创建了我的饼图但是现在我正在使用这样的一系列单元格:

chart3.add_series({
    'name': 'Pie data',
    'categories': '=Pivots!$A$3:$A$10',
    'values':     '=Pivots!$F$3:$F$10'})

它给出了一个饼图,其中包含A3-A10中的类别以及与单元格F3-F10对应的值。不幸的是,我遇到的问题并不总是在每个单元格中都有数据。所以我可能在一个工作表中有数据,其类别和值可能范围从A3-A6和值= F3-F6,有时它只有数据范围从A3-A9和值= F3-F9。我的问题是,当我显示我的传奇因为不同的工作表他们缺少字段时我想知道他们是否只是得到A的长度得到类别和F3的长度得到值所以当我的传说是显示它只显示和表示带有数据的行。

1 个答案:

答案 0 :(得分:2)

假设您可以选择动态隐藏没有数据的行,那么这是一个相当简单的解决方案。

我重新编写了xlsxwriter文档中使用的一些示例数据,然后查找了任何Nan值。如果有,那么这些是隐藏的,因此不在饼图中。

import xlsxwriter
import pandas as pd

headings = ['Category', 'Values']
data = [
['Apple', 30],['Cherry', 20],['Pecan',15],['Blueberry', 10],['Pumpkin', 10],
['Mince', float('nan')],['Custard', 3],['Potato', 2],
]


pies = pd.DataFrame(data, columns = headings)

nan_rows = pies.loc[pies['Values'].isnull()].index.values
hide_rows = nan_rows + 2

workbook = xlsxwriter.Workbook('test.xlsx', {'strings_to_numbers':  True,
                                             'strings_to_formulas': True,
                                             'nan_inf_to_errors': True})

ws = workbook.add_worksheet('Pivots')

ws.write('A2', headings[0])
ws.write('F2', headings[1])
ws.write_column('A3', pies['Category'])
ws.write_column('F3', pies['Values'])


chart3 = workbook.add_chart({'type': 'pie'})

chart3.add_series({
'name': 'Pie data',
'categories': '=Pivots!$A$3:$A$10',
'values':     '=Pivots!$F$3:$F$10'})

chart3.set_title({'name': 'Popular Pie Types'})

chart3.set_style(10)
ws.insert_chart('G11', chart3, {'x_offset': 25, 'y_offset': 10})

#This is where we hide the rows in list called hide_rows
for row_position in hide_rows:
    ws.set_row(row_position, None, None, {'hidden': True})

workbook.close()

enter image description here