首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openpyxl绘制时间进程堆叠图

使用openpyxl绘制时间进程堆叠图
EN

Stack Overflow用户
提问于 2019-02-05 05:37:21
回答 1查看 980关注 0票数 1

我想用openpyxl创建一个堆栈条形图。在我的excel表格中,每一列都是一个时间点,包含不同类别的数据。在openpyxl教程中,如果我有每行的每个时间点,那么创建条形图似乎很简单。但是我没有自由地交换行和列。有没有一种方法可以创建堆叠图,每个条形对应一个时间点,该时间点的每个类别堆叠在一起?以下是一些示例数据:

我想创建一个类似这样的图表:

EN

回答 1

Stack Overflow用户

发布于 2019-02-05 06:11:00

我修改了here中的示例以使用您的示例。主要的更改是使用关键字参数from_rows=True告诉图表的add_data()方法您拥有的是数据行而不是列。唯一的其他更改是行号和列号,以获得正确的引用。

代码语言:javascript
复制
from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

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

rows = [
    ('Mon/Cat', '2018-08', '2018-09', '2018-10', '2018-11'),
    ('Cat 101', 885, 3378, 0, 2155),
    ('Cat 102', 0, 458, 1255, 0),
    ('Cat 103', 474, 0, 1554, 1655),
    ('Cat 104', 1250, 250, 502, 845),
]


for row in rows:
    ws.append(row)


chart1 = BarChart()
chart1.type = "col"
chart1.style = 10
chart1.grouping = "stacked"
chart1.overlap = 100
chart1.title = "Chart Title"
#chart1.y_axis.title = 'y-axis'
#chart1.x_axis.title = 'x-axis'

data = Reference(ws, min_col=1, min_row=2, max_row=5, max_col=5)
cats = Reference(ws, min_col=2, min_row=1, max_col=5)
chart1.add_data(data, from_rows=True, titles_from_data=True)
chart1.set_categories(cats)
chart1.shape = 4
ws.add_chart(chart1, "A10")

wb.save("bar.xlsx")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54524661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档