Как добавить значения в определенные столбцы (категории) в столбчатой ​​диаграмме с накоплением, используя данные из кадра данных? - PullRequest
0 голосов
/ 09 октября 2019

Я пишу код для выполнения следующих действий:

  • Цикл по фрейму данных ("question_data")
  • Извлечение значений, соответствующих определенным критериям ("categoryvalue")
  • Добавьте эти значения в списки («значения категорий»), а затем
  • Используйте эти списки в качестве значений ряда для столбчатой ​​диаграммы с накоплением, используя библиотеку python-pptx. На этом этапе я бы хотел, чтобы все элементы были сгруппированы в гистограмму по значению их категории («questionresponse»).

Я успешно разработал 1 - 3, но не могу заставить 4 работатьпо мере необходимости;вместо группировки списков с одинаковыми значениями категорий (переменная «questionresponse») диаграмма добавляет ряды к новым безымянным столбцам, как показано здесь:

enter image description here

Какможно ли принудительно добавить ряды в категорию в столбчатой ​​диаграмме на основе их значения «questionresponse»?

Примечание к коду ниже: question_data - это кадр данных, извлеченный из листа Excel. Его точные поля и данные не имеют значения для этого вопроса.

chart_data = CategoryChartData()
        chart_data.categories = testweek_list
        categoryvalues = []
        for questionresponse in questionresponse_list:
            for test_week in testweek_list:
                categoryvalue = question_data.loc[(question_data['Test Week'] == test_week) & (question_data['Response Option'] == questionresponse), 'Count'].values.astype(int)
                if (categoryvalue != 0) and (categoryvalue != ""):
                    categoryvalues.append(int(categoryvalue))
                    chart_data.add_series(questionresponse, categoryvalues)
        x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
        questionslide.shapes.add_chart(XL_CHART_TYPE.COLUMN_STACKED_100, x, y, cx, cy, chart_data)
        i+=1

Ниже приведен пример желаемого результата (игнорируйте значения на графике, показанные только в иллюстративных целях):

enter image description here

...