python 柱状图设置样式_python-openpyxl图表错误栏样式

我被分配了一个“简单”任务,将一系列数据列收集到结果工作簿中.结果工作簿包含必要的公式和图表以分析结果.数据是由我使用python作为一系列Excel工作簿编写的图像分析应用程序生成的.

现在的问题是,openpyxl会删除excel工作簿中的所有现有图表.我花了整整一天的时间弄清楚如何使用openpyxl图表,其中有一些文档和图表错误栏,但没有任何示例.有简短评论的来源.

使用win32com扩展名将允许直接与Excel进行交互,但是除非在Windows中并且已安装Excel,否则显然无法正常工作.事实并非如此.还试图弄清楚如何与Excel交互可能需要一些时间,而不是从VBA宏中进行.

..

对于设置图表样式,有一种相对不错的方法,其工作原理如下:

valuewidth=openpyxl.utils.units.points_to_pixels(2.25)

valuewidth=openpyxl.utils.units.pixels_to_EMU(valuewidth)

redcolor=openpyxl.drawing.colors.ColorChoice(prstClr="red")

bluecolor=openpyxl.drawing.colors.ColorChoice(prstClr="blue")

xvalues = openpyxl.chart.Reference(exceldata.sheetrep, min_col=exceldata.seriesx['column'], min_row=exceldata.seriesx['row'], max_row=exceldata.seriesx['row']+exceldata.seriesx['rows'])

values = openpyxl.chart.Reference(exceldata.sheetrep, min_col=exceldata.seriesy['column'], min_row=exceldata.seriesy['row'], max_row=exceldata.seriesy['row']+exceldata.seriesy['rows'])

series = openpyxl.chart.Series(values, xvalues, title_from_data=True)

series.graphicalProperties.line.width=valuewidth

series.graphicalProperties.line.solidFill=bluecolor

chart.series.append(series)

现在要使用错误栏,必须像这样定义和创建它们:

errorwidth=openpyxl.utils.units.points_to_pixels(1)

errorwidth=openpyxl.utils.units.pixels_to_EMU(errorwidth)

errorlinetype=openpyxl.drawing.line.LineProperties(w=errorwidth, solidFill=redcolor)

errorline=openpyxl.chart.shapes.GraphicalProperties(ln=errorlinetype)

values = openpyxl.chart.Reference(exceldata.sheetrep, min_col=exceldata.lowerlim['column'], min_row=exceldata.lowerlim['row'])

xvalues = openpyxl.chart.Reference(exceldata.sheetrep, min_col=exceldata.lower['column'], min_row=exceldata.lower['row'])

chart.title="LL"

errorbar=openpyxl.chart.error_bar.ErrorBars(errBarType="minus",errValType="percentage",val=100.0, spPr=errorline)

errorbar.NumDataRef="LL"

series = openpyxl.chart.Series(values, xvalues, title=None, title_from_data=False)

series.errBars=errorbar

chart.series.append(series)

现在,我想知道是否有一种方法可以通过首先定义用于创建GraphicalProperties对象的LineProperty来跳过构建该spPr对象,然后在实例化期间将其馈送到ErrorBars方法.

那NumDataRef似乎什么也没做.没有记录.

编辑在任何情况下,对NumDataRef的调用都可能是错误的.加号和减号参数期望NumDataSource属于NumDataRef.正确的语法可能还是第一步创建两步的过程

foo = openpyxl.chart.data_source.NumRef(f="bar")

然后跟进

minus = openpyxl.chart.data_source.NumDataSource(numRef="foo")

我不确定numRef实际指的是什么,如果它是单元格,系列名称或其他名称.

如果任何人都可以贡献“ plus”,“ minus”和“ val”参数的作用,那将是有帮助的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值