簡體   English   中英

xlsxwriter 圖表類別文件大小

[英]xlsxwriter chart categories file size

以下代碼將 CSV 作為輸入並輸出包含條形圖的 XLSX:

import pandas
import sys
import openpyxl
from openpyxl.chart import BarChart, Reference

# ---- Data preparation ----
path = sys.argv[1]
df = pandas.read_csv(path, sep = "\t")
df = df[pandas.notnull(df['response_time'])]
df.loc[:, "datetime"].replace(to_replace = r"(.*T)", value = r"", inplace = True, regex = True)
df = pandas.pivot(df.datetime, df.name + '-' + df.type, df.response_time)

# ---- Prepare writer, workbook and worksheet ----
writer = pandas.ExcelWriter("test.xlsx", engine = 'xlsxwriter')
df.to_excel(writer, sheet_name = "graph")
workbook = writer.book
worksheet = writer.sheets["graph"]

# ---- USING OPENPYXL ----
chart1 = BarChart()
chart1.x_axis_title = "DateTime"
chart1.x_axis_title = "Response time"
data = Reference(workbook.active, min_col = 2, min_row = 1, max_col = len(df.columns) + 1, max_row = workbook.active.max_row)
xval = Reference(workbook.active, min_col = 1, min_row = 2, max_row = workbook.active.max_row)
chart1.add_data(data, titles_from_data = True)
chart1.set_categories(xval)
workbook.active.add_chart(chart1, "D4")
workbook.save("test.xlsx")

# ---- USING XLSXWRITER ----
chart = workbook.add_chart({'type' : 'column'})
for i in range(1, len(df.columns) + 1):
    chart.add_series({
        'name' : ['graph', 0, i],
        'values' : ['graph', 1, i, len(df.index), i],
        'categories': ['graph', 1, 0, len(df.index), 0],
    })
chart.set_x_axis({'name' : 'DateTime'})
chart.set_y_axis({'name' : 'Response Time'})
worksheet.insert_chart('D4', chart)
writer.save()

輸出圖為:

在此處輸入圖片說明

openpyxl 和 xlsxwriter 版本都生成完全相同的圖形。 問題是 xlsxwriter 版本輸出圖是 10MB 而 openpyxl 只有 3MB。

經過調查,我發現 xlsxwriter 版本中的“類別”條目大大增加了權重。

當我評論它時,我的 X 軸現在是從 1 到 n 的系列,但輸出只有 1.6MB,這怎么可能? 如何使用 xlsxwriter 使輸出更輕巧?

XlsxWriter 文件可能更大,因為它像 Excel 一樣存儲圖表和工作表的圖表類別和數據值。 這為 Excel 生成的文件提供了更好的保真度,這是 XlsxWriter 的目標,並且在將圖表嵌入其他應用程序(如 PowerPoint)時也減少了問題。

我從你的分析中猜測 openpyxl 不存儲額外的數據。

如果您在 Excel 中重新保存 XlsxWriter 或 openpyxl 文件,我希望您最終得到的文件大小與 XlsxWriter 文件大致相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM