Openpyxl不显示第二个图形

2024-05-15 11:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

编辑:已解决,答案如下。你知道吗

我有一个用openpyxl创建的图形,它有两个y轴共享一个日期轴。虽然第一组数据显示在图表上,但第二组数据没有显示。在图表底部还有一条奇怪的灰色线,这是以前没有的。我想这只是我在某个地方漏掉的一个小错误,但我看不到在哪里。特别是考虑到我的细胞范围定义正确。我会做错什么?你知道吗

enter image description here

import openpyxl
from openpyxl import Workbook, chart
from openpyxl.chart import LineChart, Reference, Series
from openpyxl.chart.axis import DateAxis
from datetime import date, datetime, timedelta, time
ws2 = wb['sheet2']
dates = chart.Reference(ws2, min_col=1, min_row=2, max_row=sheet.max_row)
vBat = chart.Reference(ws2, min_col=2, min_row=1, max_col=2, max_row=sheet.max_row)
qBat = chart.Reference(ws2, min_col=3, min_row=1, max_col=3)

c1 = chart.LineChart()
c1.title = "SLA Discharge - 5.5A: V_BAT"
c1.style = 12
c1.x_axis.majorTimeUnit = "days"
c1.x_axis = chart.axis.DateAxis()
c1.x_axis.title = "Time"
c1.x_axis.crosses = "min"
c1.x_axis.majorTickMark = "out"
c1.x_axis.number_format = 'd-HH-MM-SS'
c1.add_data(vBat, titles_from_data=True)
c1.set_categories(dates)
c1.y_axis.title = "Battery Voltage"
c1.y_axis.crossAx = 500
c1.y_axis.majorGridlines = None


c2 = chart.LineChart()
c2.x_axis.axId = 500 # same as c1
c2.add_data(qBat, titles_from_data=True, from_rows=True)
c2.set_categories(dates)
c2.y_axis.axId = 200
c2.y_axis.title = "Qbat Percentage"
c2.y_axis.crossAx = 500

c1.y_axis.crosses = "max"
c1 += c2


s1 = c1.series[0]
s1.graphicalProperties.line.solidFill = "BE4B48"
s1.graphicalProperties.line.width = 25000 # width in EMUs.
s1.smooth = True # Make the line smooth
s2 = c2.series[0]
s2.graphicalProperties.line.solidFill = "48BBBE"
s2.graphicalProperties.line.width = 25000 # width in EMUs.
s2.smooth = True # Make the line smooth
ws2.add_chart(c1, "D5")

有趣的是

vBat = chart.Reference(ws2, min_col=2, min_row=1, max_col=2, max_row=sheet.max_row)

很好。但是,对qBat执行相同的操作:

qBat = chart.Reference(ws2, min_col=3, min_row=1, max_col=3, max_row=sheet.max_row)

“损坏”工作簿并在打开时显示错误消息,并且不打印任何图表。从两行中删除max_row=sheet.max_row会产生一个不正确的日期轴,其中只有两个点,而且它们都是time列中的前两个值。你知道吗


Tags: fromimportlinechartcolminmaxsheet