【问题标题】:Creating pie chart in python在python中创建饼图
【发布时间】:2017-09-16 06:31:53
【问题描述】:

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

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 的长度以获取值的方法,所以当我的图例是显示它仅显示并表示包含数据的行。

【问题讨论】:

    标签: python excel charts pie-chart xlsxwriter


    【解决方案1】:

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

    我重新处理了 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()
    

    【讨论】:

      猜你喜欢
      • 2018-07-09
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-07-12
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      相关资源
      最近更新 更多