Openpyxl创建空图表

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

[我一直试图制作一个Excel文件来表示我使用Openpyxl从python程序获取的一些数据。

我可以轻松地将数据放入文件中,但是创建图形时遇到了麻烦。

图形出现在我想要的位置,但其中没有数据。

标签名称在B19-F19,实际数据在B20-F20。

这是我的代码:

chart = BarChart()
chart.type = "col"
chart.style = 10
labels = Reference(ws, min_row=2, max_row=6, min_col=19)
data = Reference(ws, min_row=2, max_row=6, min_col=20)
chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)
chart.shape = 4
ws.add_chart(chart, "O2")

感谢您的帮助

python python-3.x openpyxl
1个回答
0
投票

可能有点晚了,但我举一个例子。如果您控制了数据,则只需用数据替换变量行:

from openpyxl import Workbook
from openpyxl.chart import BarChart, Series, Reference

wb = Workbook(write_only=True)
ws = wb.create_sheet()

#If you have controlled the data , rows replace by your data
rows = [
    ('Number', 'Batch 1', 'Batch 2'),
    (2, 10, 30),
    (3, 40, 60),
    (4, 50, 70),
    (5, 20, 10),
    (6, 10, 40),
    (7, 50, 30),
]

for row in rows:
    ws.append(row)


chart = BarChart()
chart.type = "col"
chart.style = 10
# Add X and Y
chart.y_axis.title = 'Test'
chart.x_axis.title = 'length'

data = Reference(ws, min_row=1, max_row=7, min_col=2,max_col=3)
labels = Reference(ws, min_row=2, max_row=7, min_col=1)

chart.add_data(data, titles_from_data=True)
chart.set_categories(labels)
chart.shape = 4
ws.add_chart(chart, "A10")
wb.save("bar.xlsx")

结果是这样的:

enter image description here

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