openpyxl 绘制日期 x 比例

问题描述 投票:0回答:1

我想使用openpyxl在excel上绘制图表,但我不知道如何使用这个日期时间作为x轴

    print(foPath,sheetName)
    from openpyxl import load_workbook
    from openpyxl.chart import (
    LineChart,
    Reference,Series
    )
    from openpyxl.chart.axis import DateAxis
    wb = load_workbook(filename=foPath)
    sheetsName = wb.sheetnames

    # print(foPath) 
    sheet1 = wb[sheetsName[0]]
    print(sheet1['P3'].value)
    ws = wb.active
    c2 = LineChart()
    xvalues = Reference(ws,min_col=16,min_row=2,max_row=10000)
    xxvalue = Reference(ws,min_col=17,min_row=2,max_row=10000)
    sxvalue = Reference(ws,min_col=18,min_row=2,max_row=10000)
    s1value = Reference(ws,min_col=19,min_row=2,max_row=10000)
    s2value = Reference(ws,min_col=20,min_row=2,max_row=10000)
    s3value = Reference(ws,min_col=21,min_row=2,max_row=10000)
    s4value = Reference(ws,min_col=22,min_row=2,max_row=10000)
    s5value = Reference(ws,min_col=23,min_row=2,max_row=10000)

    c2.x_axis = DateAxis(crossAx=100)
    c2.x_axis.number_format = 'yyyy-mm-dd'
    
    c2.set_categories(xvalues)
    
    # c2.x_axis = axis.DateAxis()
    # c2.x_axis.number_format = "yyyy/mm/dd"
    c2.add_data(xxvalue,titles_from_data=True)
    c2.add_data(sxvalue,titles_from_data=True)
    c2.add_data(s1value,titles_from_data=True)
    c2.add_data(s2value,titles_from_data=True)
    c2.add_data(s3value,titles_from_data=True)
    c2.add_data(s4value,titles_from_data=True)
    c2.add_data(s5value,titles_from_data=True)
    ws.add_chart(c2,'A1')
    wb.save(foPath)

在代码中,x值是我想要的x轴,它的时间数据,其他数据是y轴的。 这些代码没有设置日期的 x 轴,而是设置 1 到 100000,这也会导致一些问题,

如果我没有设置c2.x_axis 这些代码不设置日期的 x 轴,而是设置 1 到 100000, 但如果我设置它 这也会引起一些问题, 我该如何修复它 非常感谢

python excel openpyxl x-axis
1个回答
0
投票
xvalues = Reference(ws,min_col=16,min_row=2,max_row=10000)
xxvalue = Reference(ws,min_col=17,min_row=2,max_row=10000)
sxvalue = Reference(ws,min_col=18,min_row=2,max_row=10000)
s1value = Reference(ws,min_col=19,min_row=2,max_row=10000)
s2value = Reference(ws,min_col=20,min_row=2,max_row=10000)
s3value = Reference(ws,min_col=21,min_row=2,max_row=10000)
s4value = Reference(ws,min_col=22,min_row=2,max_row=10000)
s5value = Reference(ws,min_col=23,min_row=2,max_row=10000)

这个数据行的标题来自row2,所以如果我需要将x值作为x轴。我需要忽略 row2 中的标题,所以我需要使用

xvalues = Reference(ws,min_col=16,min_row=3,max_row=10000)

它将从数据而不是标题开始。 仅此而已。

© www.soinside.com 2019 - 2024. All rights reserved.