通过索引 add_series 中的列最大值和最小值在循环中绘制
plotting in a loop by indexing column max and min value in add_series
我正在尝试使用 xlsxwriter
绘制条形图,但我有一个数据框列表,想使用循环为每个数据框绘制条形图。所以我需要 add_series
与 values
和 categories
每个数据帧,它们具有不同的大小,我如何读取每个数据帧并为每个数据帧索引最大和最小列?
# open an excel
writer = pd.ExcelWriter('pandas_charts.xlsx', engine='xlsxwriter')
for i in list(df_list):
df = df_list[i]
df.to_excel(writer, sheet_name=i, index=False)
workbook = writer.book
worksheet = writer.sheets[i]
## add bar chart in each sheet
chart = workbook.add_chart({'type':'bar'})
## what should I replace '!B:$B' and '!A:$A'?
chart.add_series({'values':'=' + i + '!B:$B',
'categories':'=' + i + '!A:$A'
})
worksheet.insert_chart('D1', chart)
writer.save()
谢谢!
大多数 XlsxWriter API 都支持 A1
样式范围或 (row, col)
样式值集。这也适用于 chart.add_series()
chart.add_series({
'categories': '=Sheet1!$A:$A',
'values': '=Sheet1!$B:$B',
})
# Or using a list of values instead of category/value formulas:
# [sheetname, first_row, first_col, last_row, last_col]
chart.add_series({
'categories': ['Sheet1', 0, 0, 4, 0],
'values': ['Sheet1', 0, 1, 4, 1],
})
因此在您的示例中,您可以这样做:
sheet_name = i # Or str(i)
row_min = 1
row_max = len(df) + 1
col_min = 0
col_max = 1
chart.add_series({
'categories': [sheet_name, row_min, col_min, row_max, col_min],
'values': [sheet_name, row_min, col_max, row_max, col_max],
})
另请参阅 XlsxWriter 文档中的 this Pandas chart example。
我正在尝试使用 xlsxwriter
绘制条形图,但我有一个数据框列表,想使用循环为每个数据框绘制条形图。所以我需要 add_series
与 values
和 categories
每个数据帧,它们具有不同的大小,我如何读取每个数据帧并为每个数据帧索引最大和最小列?
# open an excel
writer = pd.ExcelWriter('pandas_charts.xlsx', engine='xlsxwriter')
for i in list(df_list):
df = df_list[i]
df.to_excel(writer, sheet_name=i, index=False)
workbook = writer.book
worksheet = writer.sheets[i]
## add bar chart in each sheet
chart = workbook.add_chart({'type':'bar'})
## what should I replace '!B:$B' and '!A:$A'?
chart.add_series({'values':'=' + i + '!B:$B',
'categories':'=' + i + '!A:$A'
})
worksheet.insert_chart('D1', chart)
writer.save()
谢谢!
大多数 XlsxWriter API 都支持 A1
样式范围或 (row, col)
样式值集。这也适用于 chart.add_series()
chart.add_series({
'categories': '=Sheet1!$A:$A',
'values': '=Sheet1!$B:$B',
})
# Or using a list of values instead of category/value formulas:
# [sheetname, first_row, first_col, last_row, last_col]
chart.add_series({
'categories': ['Sheet1', 0, 0, 4, 0],
'values': ['Sheet1', 0, 1, 4, 1],
})
因此在您的示例中,您可以这样做:
sheet_name = i # Or str(i)
row_min = 1
row_max = len(df) + 1
col_min = 0
col_max = 1
chart.add_series({
'categories': [sheet_name, row_min, col_min, row_max, col_min],
'values': [sheet_name, row_min, col_max, row_max, col_max],
})
另请参阅 XlsxWriter 文档中的 this Pandas chart example。