xlsxwriter组合图表types

我有一个有以下计划的Excel图表

ABCD ID Reading 1 Reading 2 Avg Reading 1 0 4.2 6.7 3.98 1 4.4 8.8 2 4.5 9 3 5.6 4 4 1.2 4.5 

我可以用Reading 1和Reading 2绘制直方图。

 chart_1 = workbook.add_chart({'type': 'column'}) chart_1.add_series({ 'name': '=Sheet1!$B$1', 'categories': '=Sheet1!$A$2:$A$4, 'values': '=Sheet1!$B$2:$B$4, }) 

我想覆盖直方图上代表平均读数1的一行。 我如何使用python和xlsxwriter做到这一点?

Excel和XlsxWriter在图表中支持趋势线 。 然而,只有一个移动平均期权,而不是一个固定的平均期权(这是有意义的,因为它是为了趋势)。

在Excel中做这种事情的通常方法是在直方图顶部添加一个包含平均值的折线图。

这是一个基于你的数据的小实例:

 from xlsxwriter.workbook import Workbook workbook = Workbook('chart_combined.xlsx') worksheet = workbook.add_worksheet() # Add a format for the headings. bold = workbook.add_format({'bold': True}) # Make the columns wider. worksheet.set_column('B:C', 12) # Add the worksheet data that the charts will refer to. headings = ['ID', ' Reading 1', ' Avg Reading 1'] data = [ [0, 1, 2, 3, 4], [4.2, 4.4, 4.5, 5.6, 1.2], [3.98, 3.98, 3.98, 3.98, 3.98], ] worksheet.write_row('A1', headings, bold) worksheet.write_column('A2', data[0]) worksheet.write_column('B2', data[1]) worksheet.write_column('C2', data[2]) # Create a combined column and line chart that share the same X and Y axes. # First create a column chart. This will use this as the primary chart. column_chart = workbook.add_chart({'type': 'column'}) # Configure the data series for the primary chart. column_chart.add_series({ 'name': '=Sheet1!$B$1', 'categories': '=Sheet1!$A$2:$A$6', 'values': '=Sheet1!$B$2:$B$6', }) # Create a line chart. This will use this as the secondary chart. line_chart = workbook.add_chart({'type': 'line'}) # Configure the data series for the secondary chart. line_chart.add_series({ 'name': '=Sheet1!$C$1', 'categories': '=Sheet1!$A$2:$A$6', 'values': '=Sheet1!$C$2:$C$6', }) # Combine the charts. column_chart.combine(line_chart) # Insert the chart into the worksheet worksheet.insert_chart('E2', column_chart) workbook.close() 

输出:

在这里输入图像说明

请注意,这会为第一个系列中的每个数据点添加一个平均值。 如果你愿意的话,可以用两点来做到这一点。

此外,而不是自己计算平均值,你可以让Excel使用公式来做。 例如,对上述程序进行这种更改:

 # Add the worksheet data that the charts will refer to. headings = ['ID', ' Reading 1', ' Avg Reading 1'] data = [ [0, 1, 2, 3, 4], [4.2, 4.4, 4.5, 5.6, 1.2], ['=AVERAGE($B$2:$B$6)'] * 5, ] 

另请参阅XlsxWriter中组合图表上的文档部分。