使用xlswriter将趋势线添加到条形图中

问题描述

我正在尝试创建带有趋势线的条形图。我可以在excel中做到这一点,并希望使过程自动化。 xlswriter非常易于使用,我已经复制了条形图,但这只是趋势线对我不起作用。似乎在每个堆栈的顶部增加了2个元素,并在该行的顶部增加一个条。

charts

这是在左侧创建图表的代码

import xlsxwriter

# create worbook,workseet and chart
workbook = xlsxwriter.Workbook("Example.xlsx")
worksheet = workbook.add_worksheet()
chart1 = workbook.add_chart({'type': 'column','subtype': 'stacked'})

# Add the worksheet data
headings = ['Model 1','Model 2','Capacity']
data = [
    [10,40,50,20,10,50],[30,60,70,30],[20,30,30]
]

worksheet.write_row('A1',headings)
worksheet.write_column('A2',data[0])
worksheet.write_column('B2',data[1])
worksheet.write_column('C2',data[2])

# Configure the first series.
chart1.add_series({
    'name':       '=Sheet1!$A$1','values':     '=Sheet1!$A$2:$A$7',})

# Configure the first series.
chart1.add_series({
    'name':       '=Sheet1!$B$1','values':     '=Sheet1!$B$2:$B$7',})

chart1.add_series({
    'name':      '=Sheet1!$C$1','values':    '=Sheet1!$C$2:$C$7','trendline': {'type': 'linear'},})

# Set an Excel chart style.
chart1.set_style(11)

# Add a chart title
chart1.set_title ({'name': 'xlsxwriter chart'})

# Insert the chart into the worksheet (with an offset).
worksheet.insert_chart('F1',chart1)

# Finally,close the Excel file
workbook.close()

条形图选择我要插入的数据作为趋势线。任何帮助将不胜感激。

解决方法

您似乎正在尝试添加辅助折线图,而不是趋势线。您可以使用XlsxWriter chart.combine()方法执行此操作。

赞:

import xlsxwriter

# create worbook,workseet and chart
workbook = xlsxwriter.Workbook("Example.xlsx")
worksheet = workbook.add_worksheet()
chart1 = workbook.add_chart({'type': 'column','subtype': 'stacked'})

# Add the worksheet data
headings = ['Model 1','Model 2','Capacity']
data = [
    [10,40,50,20,10,50],[30,60,70,30],[20,30,30]
]

worksheet.write_row('A1',headings)
worksheet.write_column('A2',data[0])
worksheet.write_column('B2',data[1])
worksheet.write_column('C2',data[2])

# Configure the first series.
chart1.add_series({
    'name':       '=Sheet1!$A$1','values':     '=Sheet1!$A$2:$A$7',})

# Configure the first series.
chart1.add_series({
    'name':       '=Sheet1!$B$1','values':     '=Sheet1!$B$2:$B$7',})


# Add a chart title
chart1.set_title ({'name': 'xlsxwriter chart'})

# Create a second line chart.
chart2 = workbook.add_chart({'type': 'line'})

chart2.add_series({
    'name':      '=Sheet1!$C$1','values':    '=Sheet1!$C$2:$C$7',})


# Combine the charts.
chart1.combine(chart2)

# Insert the chart into the worksheet (with an offset).
worksheet.insert_chart('F1',chart1)

# Finally,close the Excel file
workbook.close()

输出

enter image description here