Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何将多个图表添加到一个excel的不同工作表中?_Python_Xlsxwriter - Fatal编程技术网

Python 如何将多个图表添加到一个excel的不同工作表中?

Python 如何将多个图表添加到一个excel的不同工作表中?,python,xlsxwriter,Python,Xlsxwriter,我想将使用xlsxwriter创建的多个图表导出到一个excel中的多个工作表中。我有两个数据帧,如下所示: df_a = pd.DataFrame({'User':['101','102','103','104','105','106'],'CountA':[7,8,9,10,11,12],'CountB':[1,2,3,4,5,6],'CountC':[13,14,15,16,17,18]}) df_b = pd.DataFrame({'User':['107','108','109','

我想将使用xlsxwriter创建的多个图表导出到一个excel中的多个工作表中。我有两个数据帧,如下所示:

df_a = pd.DataFrame({'User':['101','102','103','104','105','106'],'CountA':[7,8,9,10,11,12],'CountB':[1,2,3,4,5,6],'CountC':[13,14,15,16,17,18]})

df_b = pd.DataFrame({'User':['107','108','109','110','111','112'],'ValA':[10,20,30,40,50,60],'ValB':[70,80,90,100,110,120],'ValC':[130,140,150,160,170,180]})
我已成功创建了一个excel文件,即“test.xlsx”,其中包含df_a及其相应的堆叠条形图,代码如下:

#Create a Pandas Excel writer using XlsxWriter as the engine.
 excel_file_a = 'test.xlsx'
 sheet_name_a = 'testA'

 writer = pd.ExcelWriter(excel_file_a, engine='xlsxwriter')
 df_a.to_excel(writer, sheet_name=sheet_name_a,index=False)

#Access the XlsxWriter workbook and worksheet objects from the dataframe.
 workbook = writer.book
 worksheet_a = writer.sheets[sheet_name_a]

#Create a chart object.
 chart_a = workbook.add_chart({'type': 'column', 'subtype': 'stacked'})

#Configure the series of the chart from the dataframe data.
 for col_num in range(1, 4):
     chart_a.add_series({
         'name':       ['testA', 0, col_num],
         'categories': ['testA', 1, 0, 5, 0],
         'values':     ['testA', 1, col_num, 5, col_num],
         'gap':        2,
                         })

#Insert the chart into the worksheet.
 worksheet_a.insert_chart('G2', chart_a)

#Close the Pandas Excel writer and output the Excel file.
 writer.save()

但是,我还希望df_b及其各自的堆叠条形图位于同一excel文件“test.xlsx”中,但位于不同的工作表中,比如sheetname=testB。

这是使用循环的好地方。例如:

#您只需要其中一个
excel_文件='test.xlsx'
writer=pd.ExcelWriter(excel\u文件,engine='xlsxwriter')
工作簿=writer.book
数据帧=(df_a,df_b)
#循环浏览我们的数据帧列表
对于范围内的i(len(数据帧)):
工作表名称='test'+'abcdefghijklmnop'[i]#testa、testb等。
数据帧=数据帧[i]
dataframe.to_excel(编写器,工作表名称=工作表名称,索引=False)
工作表=编写器.工作表[工作表名称]
....
#所有其他的东西都在下面,直到。。。
工作表.插入图表('G2',图表)
#现在我们已经完成了循环
writer.save()

这是使用循环的好地方。例如:

#您只需要其中一个
excel_文件='test.xlsx'
writer=pd.ExcelWriter(excel\u文件,engine='xlsxwriter')
工作簿=writer.book
数据帧=(df_a,df_b)
#循环浏览我们的数据帧列表
对于范围内的i(len(数据帧)):
工作表名称='test'+'abcdefghijklmnop'[i]#testa、testb等。
数据帧=数据帧[i]
dataframe.to_excel(编写器,工作表名称=工作表名称,索引=False)
工作表=编写器.工作表[工作表名称]
....
#所有其他的东西都在下面,直到。。。
工作表.插入图表('G2',图表)
#现在我们已经完成了循环
writer.save()

我刚刚复制并粘贴了您的代码,并更改了一些内容。 我不知道你有什么问题,也许你在重写什么

    excel_file_a = 'test.xlsx'
    sheet_name_a = 'testA'
    sheet_name_b = 'testB'

    writer = pd.ExcelWriter(excel_file_a, engine='xlsxwriter')

    df_a.to_excel(writer, sheet_name=sheet_name_a,index=False)
    df_b.to_excel(writer, sheet_name=sheet_name_b,index=False)

    workbook = writer.book
    worksheet_a = writer.sheets[sheet_name_a]
    worksheet_b = writer.sheets[sheet_name_b]

    chart_a= workbook.add_chart({'type': 'column', 'subtype': 'stacked'})
    chart_b= workbook.add_chart({'type': 'column', 'subtype': 'stacked'})

    for col_num in range(1, 4):
          chart_a.add_series({
             'name':       ['testA', 0, col_num],
             'categories': ['testA', 1, 0, 5, 0],
             'values':     ['testA', 1, col_num, 5, col_num],
             'gap':        2,
                             })

    for col_num in range(1, 4):
          chart_b.add_series({
             'name':       ['testB', 0, col_num],
             'categories': ['testB', 1, 0, 5, 0],
             'values':     ['testB', 1, col_num, 5, col_num],
             'gap':        2,
                             })

    worksheet_a.insert_chart('G2', chart_a)
    worksheet_b.insert_chart('G3', chart_b)

    writer.save()


我刚刚复制并粘贴了您的代码,并更改了一些内容。 我不知道你有什么问题,也许你在重写什么

    excel_file_a = 'test.xlsx'
    sheet_name_a = 'testA'
    sheet_name_b = 'testB'

    writer = pd.ExcelWriter(excel_file_a, engine='xlsxwriter')

    df_a.to_excel(writer, sheet_name=sheet_name_a,index=False)
    df_b.to_excel(writer, sheet_name=sheet_name_b,index=False)

    workbook = writer.book
    worksheet_a = writer.sheets[sheet_name_a]
    worksheet_b = writer.sheets[sheet_name_b]

    chart_a= workbook.add_chart({'type': 'column', 'subtype': 'stacked'})
    chart_b= workbook.add_chart({'type': 'column', 'subtype': 'stacked'})

    for col_num in range(1, 4):
          chart_a.add_series({
             'name':       ['testA', 0, col_num],
             'categories': ['testA', 1, 0, 5, 0],
             'values':     ['testA', 1, col_num, 5, col_num],
             'gap':        2,
                             })

    for col_num in range(1, 4):
          chart_b.add_series({
             'name':       ['testB', 0, col_num],
             'categories': ['testB', 1, 0, 5, 0],
             'values':     ['testB', 1, col_num, 5, col_num],
             'gap':        2,
                             })

    worksheet_a.insert_chart('G2', chart_a)
    worksheet_b.insert_chart('G3', chart_b)

    writer.save()


您好,我测试了您的方法,只得到df_a.ahh nvm的结果,这是因为最后一个writer.save()上的缩进。现在就去拿,谢谢你的帮助!您好,我测试了您的方法,只得到df_a.ahh nvm的结果,这是因为最后一个writer.save()上的缩进。现在就去拿,谢谢你的帮助!是的,最初我也尝试过这种方法,但我只得到了df_a。我想我可能在重写某些内容。无论如何谢谢你!是的,最初我也尝试过这种方法,但我只得到了df_a。我想我可能在重写某些内容。无论如何谢谢你!