Excel xlsxwriter图表中的颜色管理
Excel 2016/Python 2.7.6/XlsxWriter 1.1.1 我正在编写代码来选择文件,将它们编译成一个.xlsx文件,并将它们绘制在各自图纸上的两个图表上。理想情况下,我想强制来自同一选项卡的系列具有相同的颜色。不幸的是,xlsxwriter无法识别Excel 2016中的颜色名称 我更喜欢使用Excel默认选择的颜色顺序。其中一个图表很好(我没有指定颜色,它只有一个x&y轴,每个选项卡一个系列)。另一个则不然。我正在绘制一个系列,作为一条线与左Y轴相对,我正在绘制一个系列与右Y轴相对,我想匹配颜色,我正在绘制第三个系列与右Y轴相对,我只想使用标记。选项卡的数量不是有限的,但通常有5个 默认颜色是蓝色、红色、橄榄绿、紫色、浅绿色和橙色(我没有超出这些颜色)。我试着创建一个这些颜色的列表,但它不能识别橄榄绿或浅绿色。把它们改成绿色和青色太苛刻了 是否有一种方法允许xlsxwriter选择颜色,然后获取该系列的颜色并将其应用于下一个系列?找到每种颜色的十六进制代码并使用它是最好的吗Excel xlsxwriter图表中的颜色管理,excel,python-2.7,xlsxwriter,Excel,Python 2.7,Xlsxwriter,Excel 2016/Python 2.7.6/XlsxWriter 1.1.1 我正在编写代码来选择文件,将它们编译成一个.xlsx文件,并将它们绘制在各自图纸上的两个图表上。理想情况下,我想强制来自同一选项卡的系列具有相同的颜色。不幸的是,xlsxwriter无法识别Excel 2016中的颜色名称 我更喜欢使用Excel默认选择的颜色顺序。其中一个图表很好(我没有指定颜色,它只有一个x&y轴,每个选项卡一个系列)。另一个则不然。我正在绘制一个系列,作为一条线与左Y轴相对,我正在绘制一个系列
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})
找到每种颜色的十六进制代码并使用它是最好的吗
对。只有有限的数量,它们的存在只是出于向后兼容的原因,也只是为了使示例更加清晰
如果您想要自己的调色板,那么您可以使用HTML颜色选择器()计算出一个调色板
请注意,您的范围(如$a$2:$a$5000
)是错误的。Excel使用大写的列字母。更好的方法是避免尝试手动构造这些类型的范围,而是对类别和值使用列表语法,如下所示:
chart.add_series({'name': tab,
'categories': [tab, 1, 0, 4999, 0],
'values': [tab, 1, 2, 4999, 2]})
有关此列表语法的解释,请参阅上的文档。颜色选择器非常棒-比我在此之前找到的链接更有用!关于这一系列内容的信息很好。通过编程确定实际需要绘制的索引,我可以使我的代码更加健壮,这在将来会很有用。Excel确实在列中使用大写字母,但它也强制所有小写字母都使用大写字母。