python - Openpyxl 条形图 误差线

标签 python python-3.x openpyxl errorbar

我想知道是否可以将误差线系列设置为引用。我想做的是引用已经计算出错误值的单元格。然后将其显示在条形图的顶部。

我发现了一个类似的问题,他们似乎做了我正在尝试的一个版本,但是当我编辑他们的示例时,我收到错误。 任何建议将不胜感激。感谢您抽出时间。

我想要的图表和误差线的示例 enter image description here 错误:

类型错误:预期类“openpyxl.chart.error_bar.ErrorBars”

类似问题 openpyxl chart error bar styles

我当前的代码

            chart1 = BarChart()
            chart1.type = "col"
            chart1.height = 10
            chart1.width = col + 7
            chart1.title = name

            data = Reference(ws, min_col=4, min_row=23, max_col=17)
            cats = Reference(ws, min_col=4, min_row=29, max_col = 17)
            eBars = Reference(ws, min_col=4, min_row=26, max_col=17)

            s= Series(data)

            series = SeriesFactory(data, title="y direction error")
            series.errBars = eBars

            chart1.append(s)
            chart1.append(series)
            chart1.legend = None
            chart1.set_categories(cats)

            chart1.x_axis.tickLblPos = "low"
            #chart1.x_axis.tickLblSkip = 0

            chart1.shape = 10
            ws.add_chart(chart1, "C3")

最佳答案

Comment: ... setting a reference to the plus and minus

我明白你的观点,将 numLit 替换为 numRef:

NumDataSource / NumRef

class openpyxl.chart.data_source.NumDataSource(numRef=None, numLit=None)  
    `numLit`  Values must be of type <class ‘openpyxl.chart.data_source.NumData’>
    `numRef` Values must be of type <class ‘openpyxl.chart.data_source.NumRef’>
eBarsNumDataSource = NumDataSource(NumRef(eBars))
series.errBars = ErrorBars(errDir='y', errValType='cust', plus=eBarsNumDataSource, minus=eBarsNumDataSource)
<小时/>

Question: TypeError: expected class 'openpyxl.chart.error_bar.ErrorBars'

您的eBars属于Reference类型,但您需要openpyxl.chart.error_bar.ErrorBars类型。

class openpyxl.chart.error_bar.ErrorBars

class openpyxl.chart.error_bar.ErrorBars(
    errDir=None, 
    errBarType='both', 
    errValType='fixedVal', 
    noEndCap=None, plus=None, minus=None, val=None, spPr=None, extLst=None)

您至少需要以下参数:

 ErrorBars(errDir=Value must be one of {‘x’, ‘y’}, 
           plus=Values must be of type <class ‘openpyxl.chart.data_source.NumDataSource’>, 
           minus=Values must be of type <class ‘openpyxl.chart.data_source.NumDataSource’>, 
          )

按照链接的类似问题中的 def list2errorbars(... 进行操作。

关于python - Openpyxl 条形图 误差线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45925153/

相关文章:

python-3.x - 选择 jinja 内的 Flask wtforms selectfield 的默认值以获取动态数据

python-3.x - 无法从 kdeplot 读取数据

python-pptx – 如何在图表中单独隐藏/显示数据标签

python - 使用 Python 密码保护 Excel 文件

python - openpyxl:在 load_workbook() 上给出错误

python - 如何使用 matplotlib 突出显示特定的 x 值?

python - 搜索python文件中的所有if条件并在下一行添加打印语句

python - 用python对电势进行数值微分

python - 强制列表中的数字保留两位小数

python - 删除空行 - openpyxl