【问题标题】:XlsxWriter - Chart Column and Legend Color MismatchXlsxWriter - 图表列和图例颜色不匹配
【发布时间】:2019-03-21 21:53:47
【问题描述】:

我正在与xlsxwriterpython 合作。我创建了一些图表,但是颜色不匹配。我正在尝试根据工作需要设置颜色,但是 legend colors 不匹配。 我需要制作第二列green,但在图例部分它会变成红色。这是我得到的图表-

这是我正在使用的代码:

chart8 = workbook.add_chart({'type': 'column'})

chart8.add_series({'name':'RO',
                   'categories': [sheet_name, a, 0, b, 0],
                   'values':     [sheet_name, a, 1, b, 1],
                   'data_labels': {'value': True}, 
                   'points':[{'fill': {'color': 'blue','transparency':30}}, 
                             {'fill': {'color': 'blue','transparency':30}}]})

chart8.add_series({'name':'Planning',
                   'categories': [sheet_name, a, 0, b, 0],
                   'values':     [sheet_name, a, 2, b, 2],
                   'data_labels': {'value': True}, 
                   'points':[{'fill': {'color': 'lime','transparency':20}}, 
                             {'fill': {'color': 'lime','transparency':20}}]})

chart8.set_legend({'position': 'bottom'})

worksheet.insert_chart('G'+str(a), chart8)

worksheet.insert_chart(0, 6, chart8)

我试图找到原因,但找不到太多。为什么会发生这种情况,我该如何解决?

【问题讨论】:

    标签: python charts colors legend xlsxwriter


    【解决方案1】:

    我正在尝试根据工作需要设置颜色,但是图例颜色不匹配。

    这样做的原因是您正在为数据的“点”而不是整个系列设置格式。所以 Excel 在图例中仍然显示默认的系列格式。

    修复很简单,您只需为整个系列指定“填充”,而不仅仅是系列中的点:

    import xlsxwriter
    
    workbook = xlsxwriter.Workbook('chart.xlsx')
    worksheet = workbook.add_worksheet()
    
    
    # Write some data to add to plot on the chart.
    worksheet.write_column('A1', ['New', 'Site'])
    worksheet.write_column('B1', [8, 7])
    worksheet.write_column('C1', [22, 9])
    
    # Create a new Chart object.
    chart8 = workbook.add_chart({'type': 'column'})
    
    # Set the sheet values.
    sheet_name = 'Sheet1'
    a = 0
    b = 1
    
    chart8.add_series({'name':'RO',
                       'categories': [sheet_name, a, 0, b, 0],
                       'values': [sheet_name, a, 1, b, 1],
                       'data_labels': {'value': True},
                       'fill': {'color': 'blue', 'transparency': 30}})
    
    chart8.add_series({'name':'Planning',
                       'categories': [sheet_name, a, 0, b, 0],
                       'values': [sheet_name, a, 2, b, 2],
                       'data_labels': {'value': True},
                       'fill': {'color': 'lime', 'transparency': 20}})
    
    chart8.set_legend({'position': 'bottom'})
    
    worksheet.insert_chart(0, 6, chart8)
    
    workbook.close()
    

    输出:

    【讨论】:

    • 谢谢!这完全奏效了!我不得不为其他一些图表使用点数。我没有意识到我正在为他们所有人这样做。
    • 对于 Excel 中的饼图和 Doughtnut 样式图表,您需要使用点来定义单独的颜色。但是 Excel 中的所有其他图表类型都使用系列。您仍然可以使用点来设置非饼图的各个元素,但这种用法很少见。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-01-21
    相关资源
    最近更新 更多