Openpyxl Гистограмма Столбики ошибок

Мне было интересно, можно ли установить серию полос ошибок для ссылки. Что я хотел бы сделать, так это ссылаться на ячейки с уже рассчитанными значениями ошибок. а затем отобразить его поверх гистограмм.

Я нашел аналогичный вопрос, где они, похоже, сделали версию того, что я пытаюсь сделать, но когда я редактирую их пример, я получаю сообщение об ошибке. Любые советы будут высоко ценится. Спасибо за ваше время.

Пример того, как должен выглядеть график и планки ошибок введите описание изображения здесь Ошибка:

TypeError: ожидаемый класс 'openpyxl.chart.error_bar.ErrorBars'

похожий вопрос стили панели ошибок диаграммы openpyxl

Мой текущий код

            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")

person laxer    schedule 28.08.2017    source источник


Ответы (1)


Комментарий: ... установка ссылки на плюс и минус

Я понимаю вашу точку зрения, замените 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)

Вопрос: TypeError: ожидаемый класс 'openpyxl.chart.error_bar.ErrorBars'

Ваш eBars относится к типу Reference, но вам нужен тип openpyxl.chart.error_bar.ErrorBars.

класс 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(... в связанном аналогичном вопросе.

person stovfl    schedule 29.08.2017
comment
Спасибо за ответ! Я ошибаюсь или мне нужны значения ошибок для работы функции def list2errorbars(...? То, как эти листы работают, Excel выполняет все вычисления, а затем все ссылки на график и планки ошибок. есть ли способ настроить так? Прямо сейчас кажется, что бары, как рассчитать время по сравнению со ссылкой и установить ссылку на plus и minus. Еще раз спасибо за ваш ответ!! - person laxer; 29.08.2017
comment
Отлично получилось!! Большое спасибо за помощь и прекрасное объяснение! - person laxer; 29.08.2017