#python #charts #openpyxl #xlsx
#питон #Диаграммы #openpyxl #xlsx
Вопрос:
Хороший день,
Я пытаюсь создать диаграмму Excel с помощью openpyxl, но у меня возникли некоторые трудности при назначении данных диаграмме. Проблема, срезанная в программном коде, показана ниже:
import pandas as pd from openpyxl import Workbook from openpyxl.chart import (SurfaceChart3D, Reference, Series) from openpyxl.chart.axis import SeriesAxis from os import startfile book_name = "3DChart.xlsx" dictionary = {} dictionary["X1"] = [8.1, 8.1, 8.1, 8.1, 8.1] dictionary["X2"] = [8, 8.1, 8.1, 8.1, 8] dictionary["X3"] = [8, 8, 8.1, 8, 8] dictionary["X4"] = [8, 8, 8, 8, 8] dictionary["X5"] = [8, 8, 8, 8, 8] dataframe = pd.DataFrame(dictionary, index=['Y1', 'Y2', 'Y3', 'Y4', 'Y5']) try: with pd.ExcelWriter(book_name, mode='a', if_sheet_exists='new', engine='openpyxl') as writer: dataframe.to_excel(writer, sheet_name="Distribution") except FileNotFoundError: with pd.ExcelWriter(book_name) as writer: dataframe.to_excel(writer, sheet_name="Distribution") wb = Workbook("3DChart.xlsx") ws = wb.active surface_chart = SurfaceChart3D() values = Reference(ws, min_col=2, max_col=6, min_row=2, max_row=6) labels = Reference(ws, min_col=2, max_col=6, min_row=2, max_row=6) surface_chart.add_data(values) surface_chart.set_categories(labels) surface_chart.title = "Distribution" ws.surface_chart(surface_chart, "G1") ws.add_chart(surface_chart, "G29") startfile(book_name)
Этот код приводит к следующему обратному отслеживанию и ошибке:
Traceback (most recent call last): line 32, in lt;modulegt; surface_chart.add_data(values) line 183, in add_data series = SeriesFactory(ref, title_from_data=titles_from_data) line 24, in SeriesFactory source = NumDataSource(numRef=NumRef(f=values)) line 100, in __init__ self.f = f line 35, in __set__ super(Nested, self).__set__(instance, value) line 67, in __set__ value = _convert(self.expected_type, value) line 57, in _convert raise TypeError('expected ' str(expected_type)) TypeError: expected lt;class 'str'gt;
При попытке использовать простой список данных это, похоже, работает. Я пробовал поиграть с форматом своего словаря, но, похоже, всегда получаю одну и ту же ошибку в функции add_data.
Спасибо,
Комментарии:
1. Пожалуйста, отредактируйте свой вопрос, чтобы включить полную обратную связь. Без этого любому человеку трудно понять, в чем проблема в вашем коде.
2. Извини за это. не позволил бы мне публиковать так много кода без дополнительного текста. Я добавил небольшой текст и включил полную обратную связь.