xlsxwriter y2 轴格式不正确

xlsxwriter y2 axis not formatting correctly

我正在尝试在 Python 3.7 中的 xlsxwriter 3.0.1 中使用组合图构建报告。我希望左手轴显示如下:

但我明白了:

代码如下:

import xlsxwriter

book = xlsxwriter.Workbook("chartbug.xlsx")

money_fmt = book.add_format({"num_format": "#,##0"})
pct_fmt = book.add_format({"num_format": "0.00%"})

sheet = book.add_worksheet("Data")

sheet.write_column(1, 0, ["John", "Paul", "George", "Ringo"])
sheet.write_column(1, 1, [7800000, 3600000, 14500000, 9500000], money_fmt)
sheet.write_column(1, 2, [8000000, 8000000, 8000000, 8000000], money_fmt)
sheet.write_column(1, 3, [0.25, -0.05, 1.17, 0.15], pct_fmt)
sheet.write_row(0, 0, ["Name", "Last Year", "This Year", "Delta"])

chart = book.add_chart({"type": "column"})

chart.add_series(
    {"name": "Last Year", "categories": "Data!A2:A5", "values": "Data!B2:B5"}
)
chart.add_series(
    {"name": "This Year", "categories": "Data!A2:A5", "values": "Data!C2:C5"}
)

chart.set_y_axis(
    {
        "major_unit": 2000000,
        "num_format": "#,,",
        "major_gridlines": {"visible": False},
    }
)

line_chart = book.add_chart({"type": "line"})

line_chart.add_series(
    {
        "name": "Delta",
        "categories": "Data!A2:A5",
        "values": "Data!D2:D5",
        "y2_axis": True,
    }
)

chart.set_y2_axis({"major_units": 0.5, "num_format": "0%"})
chart.combine(line_chart)

sheet.insert_chart("A8", chart)

book.close()

这个项目的额外问题:我真的很想用百万单位(2M、4M 等)显示主 y 轴,但我似乎也做不到。

关于如何正确格式化第二个轴的任何想法?

这是一个很好的错误报告。

问题在这里:

chart.set_y2_axis({"major_units": 0.5, "num_format": "0%"})

该方法应在 line_chart:

上调用
line_chart.set_y2_axis({"major_units": 0.5, "num_format": "0%"})

之后你应该得到预期的结果:

Bonus problem on this project: I'd really like the primary y axis to display with a Millions unit (2M, 4M, etc) but I can't seem to get that work either.

这取决于您想在 Excel 中如何做到这一点。有一个 Excel 图表轴“display_units”选项,可以设置为“百万”。 xlsxwriter 通过 major_unit_type 部分支持该功能,但目前仅针对 X 轴和日期实现。它也可能不是您想要的。如果那是您正在寻找的内容,您可以在 GitHub 上打开功能请求,我会进行调查。但是,您可以使用图表轴标题获得类似的结果。