python - 无法通过调用函数使用Xlsxwriter绘制多个图表

标签 python python-2.7 xlsxwriter

我正在使用 Xlsxwriter 在单个工作表中绘制多个图表。问题是,当我调用函数添加图表时,对于不同的数据集,它会覆盖以前的 xlsx 并仅绘制最新的图表。这是我的主要程序:

  # Write some data to add to plot on the chart.
 data = [
            [51, 62, 33, 14, 95],
            [52, 64, 36, 18, 10],
            [53, 66, 39, 12, 15],
           ]
 meas_num = 1
 tc.power_chart_excel(data,meas_num)

这是函数:

 def power_chart_excel(self, data, meas_num):

    workbook = xlsxwriter.Workbook('C:/Amitra/chart.xlsx')
    worksheet = workbook.add_worksheet()


    # Create a new Chart object.
    chart = workbook.add_chart({'type': 'column'})
    ---- #Other chart commands

    #Writing data to different columns for different charts
    worksheet.write_column(wr_col_num_1 + '1', data[0])
    worksheet.write_column(wr_col_num_2 + '1', data[1])
    worksheet.write_column(wr_col_num_3 + '1', data[2])
    #worksheet.write_column(wr_col_num_4 + '1', data[3])
    #worksheet.write_column(wr_col_num_5 + '1', data[4])



    # Configure the chart. In simplest case we add one or more data series.
    #chart.add_series({'values': '=Sheet1!$A$1:$A$5'})
    chart.add_series({'values': '=Sheet1!$' + wr_col_num_1 +  '$1:$' + wr_col_num_1 +  '$5'})
    chart.add_series({'values': '=Sheet1!$' + wr_col_num_2 +  '$1:$' + wr_col_num_2 +  '$5'})
    chart.add_series({'values': '=Sheet1!$' + wr_col_num_3 +  '$1:$' + wr_col_num_3 +  '$5'})
    chart.add_series({'values': '=Sheet1!$' + wr_col_num_4 +  '$1:$' + wr_col_num_4 +  '$5'})
    chart.add_series({'values': '=Sheet1!$' + wr_col_num_5 +  '$1:$' + wr_col_num_5 +  '$5'})


    worksheet.insert_chart(chart_position, chart)

    workbook.close()

如何多次调用该函数在同一张纸上绘制多个图表而不删除前一个图表?我已经测试过,如果我不调用函数并打开图表一次并关闭一次,则会引入多个图表。但我不知道如何使用这个函数做同样的事情。

最佳答案

您的工作簿对象代表一个新的 Excel 文件。 Xlsxwriter 无法附加到现有的 xlsx 文件。因此,您应该保持工作簿打开并在同一工作簿中添加新图表。您的代码可能如下所示:

workbook = xlsxwriter.Workbook('C:/Amitra/chart.xlsx')
worksheet = workbook.add_worksheet()

for d in my_data: # or a similar loop depending on your program
    tc.power_chart_excel(worksheet, d, meas_num)

def power_chart_excel(self, worksheet, data, meas_num):
    # Create a new Chart object.
    chart = workbook.add_chart({'type': 'column'})
    # rest of the code goes here
    worksheet.insert_chart(chart_position, chart)

关于python - 无法通过调用函数使用Xlsxwriter绘制多个图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30210239/

相关文章:

python - RTSP 视频流的发送方报告 (SR) 的绝对时间戳

python - 为 Ising-/Potts-Model Monte-Carlo 加速 Python/Numpy 代码

python - 3D *.STL 表面模型转换为 2D 图像堆栈?

python - 将 CSV 文件读入 __init__ 类中的字段?

cookies - cookie 的持久性

python - 如何在 xlsxwriter 中将值放置在堆积条形图之外

python - 使用python添加两个列表和一个图像作为excel文件的标题

python - xlsxwriter 行和列相交格式

python - 如何在不适合内存的 Python 中使用大型字典?

Python Pandas : Skip rows by particular pattern (not row number) using pd. read_csv