Python 使用openpyxl创建条形图,日期在x轴上

Python 使用openpyxl创建条形图,日期在x轴上,python,openpyxl,Python,Openpyxl,我有一个数据集,我想在其中创建一个条形图(使用openpyxl),日期在x轴上,成本在y轴上。类别将按颜色区分 资料 (已在excel中) 渴望的 类似于此,日期在X轴上 这是可能的,还是我必须更改excel中数据的布局 做 这是可能的,还是我必须更改excel中数据的布局? 欢迎提出任何建议重要的是调整参考边界,以包括正确的数据和类别范围,并在调用添加数据时添加from_rows=True,因为您使用的是相对于预期数据的转置布局 从openpyxl导入加载\u工作簿 从openpyxl.c

我有一个数据集,我想在其中创建一个条形图(使用openpyxl),日期在x轴上,成本在y轴上。类别将按颜色区分

资料 (已在excel中)

渴望的

类似于此,日期在X轴上

这是可能的,还是我必须更改excel中数据的布局

这是可能的,还是我必须更改excel中数据的布局?
欢迎提出任何建议

重要的是调整参考边界,以包括正确的数据和类别范围,并在调用
添加数据
时添加
from_rows=True
,因为您使用的是相对于预期数据的转置布局

从openpyxl导入加载\u工作簿
从openpyxl.chart导入条形图、参考、系列、散点图、折线图、股票图、面积图、面积图3D
path=“data.xlsx”
wb_obj=加载_工作簿(路径)
表_obj=wb_obj.active
c1=条形图()
c1.type=“col”
c1.style=39
c1.形状=4
c1.title=“全球成本”
c1.y_axis.title=“以美元为单位的成本”
c1.x_axis.title=“类别”
数据=参考(图纸obj,最小列=1,最小行=2,最大列=3,最大行=6)
cats=参考(图纸obj,最小列=2,最大列=3,最小列=1,最大列=1)
c1.添加数据(数据,来自行=真,标题来自数据=真)
c1.设置类别(猫)
表格对象添加图表(c1,“A9”)
wb_对象保存(“sample.xlsx”)

Oops-在您的代码尝试中没有看到x轴标题有点不合适,因为它可能是“月”,但这是一个简单的修复方法。哇,谢谢!文档中没有这方面的例子是的,我必须grep源代码才能找到它。这意味着什么(grep源代码?)我下载了源代码并进行了文本搜索,在任何文件中查找“add_data”。最后,我找到了add_data函数的声明位置,并发现它有
from_rows
作为一个可能的参数
openpyxl/chart/_chart.py:def add_data(self,data,from_rows=False,titles_from_data=False)
Category 2021-01    2021-02
Network  10         20
Other    20         30
Storage  10         10
Compute  10         10
Total:   50         70
path = "C:/Users/th/data.xlsx"
wb_obj = load_workbook(path)
sheet_obj = wb_obj.active

c1 = BarChart()
c1.title = "Global Costs"
c1.y_axis.title = "Cost in Dollars"
c1.x_axis.title = "Category"
c1.x_axis.number_format = 'mm/dd/yy'
c1.x_axis.majorTimeUnit = "days";
c1 = deepcopy(c1)
c1.style = 39


data = Reference(sheet_obj, min_col=2, min_row=9, max_col=3, max_row=14)
c1.add_data(data, titles_from_data=True)

cats = Reference(sheet_obj, min_col=1, max_col=1, min_row=10, max_row=13)
c1.set_categories(cats)



sheet_obj.add_chart(c1, "E9")
wb_obj.save("sample.xlsx")