Excel 2016 / Python 2.7.6 / XlsxWriter 1.1.1
Я пишу код, чтобы выбрать файлы, скомпилировать их в один файл .xlsx и нанести их на 2 диаграммы на своих собственных листах.В идеале я бы хотел, чтобы серии из одной вкладки были одинакового цвета.К сожалению, xlsxwriter не распознает имена цветов из Excel 2016.
Я бы предпочел использовать порядок цветов, который Excel выбирает по умолчанию.Один из графиков в порядке (я не указываю цвет, это только одна ось X и Y, одна серия на вкладку).Другой менее так.Я строю одну серию в виде линии против левой оси Y, я строю одну против правой оси Y, и я хочу сопоставить цвет, и я строю третью серию также против правой оси Y, и я хочуиспользуйте только маркеры для этого.Количество вкладок не ограничено, но обычно их будет 5.
По умолчанию используются синий, красный, оливково-зеленый, фиолетовый, аква и оранжевый (я не вышел за их пределы).Я попытался создать список этих цветов, но он не распознает оливково-зеленый или аквамариновый.Менять их на зеленый и голубой слишком сложно.
Можно ли разрешить xlsxwriter выбрать цвета, а затем получить цвет для этой серии и применить ее к следующей?Лучше всего найти шестнадцатеричный код для каждого цвета и использовать его вместо этого?
colors = ['blue', 'red', 'Olive Green', 'purple', 'Aqua', 'orange', 'lime', 'magenta', 'navy', 'pink', 'cyan',
'silver', 'brown'] #named colors to cycle through
series_to_delete = [] #for legend simplicity
series = len(files)
j = 0
for df, tab in zip(dfs, tabs):
if j > len(colors): #if you run out of colors, go back to the beginning
j = 0
color = colors[j] #choose a color
df.to_excel(writer, tab) #write the df to a tab
x_categories = "='" + tab + "'!$a$2:$a$5000" #for the first plot
y_values = "='" + tab + "'!$c$2:$c$5000" #y values used in both plots
x2_categories = "='" + tab + "'!$b$2:$b$5000" #second plot, x axis
y2_values = "='" + tab + "'!$d$2:$d$5000" #second plot, second y axis
x3_categories = "='" + tab + "'!$e$2:$e$5000" #these are markers
y3_values = "='" + tab + "'!$f$2:$f$5000" #this is the 3rd series on plot 2
chart.add_series({'name': tab, 'categories': x_categories, 'values': y_values}) #plot 1, note no named color
chart2.add_series({'name': tab, 'categories': x2_categories, 'values': y_values, 'line': {'color': color}}) #plot 2, against 1st y axis
chart2.add_series({'name': tab, 'categories': x2_categories, 'values': y2_values, 'y2_axis': 1,
'line': {'color': color, 'transparency': 50}}) #plot 2, against 2nd y axis
chart2.add_series({'categories': x3_categories, 'values': y3_values, 'line': {'none': True},
'marker': {'type': 'automatic'}, 'y2_axis': 1,
'data_labels': {'value': True, 'category': True, 'separator': "\n"}}) #plot 2, against 2nd y axis
j += 1
series_to_delete.append(series) #this is so the legend isn't cluttered
series_to_delete.append(series + 1) #with each series named 3X
series += 2
chart2.set_legend({'delete_series': series_to_delete})