使用openpyxl设置条形图中的颜色

5

我想使用openpyxl设置条形图中条的颜色。我创建了以下内容:

data = Reference(sheet, min_col=3, min_row=6, max_col=4, max_row=10)
titles = Reference(sheet, min_col=1, min_row=6, max_row=10)
chart = BarChart3D()
chart.title = title
chart.add_data(data=data, titles_from_data=True)
chart.set_categories(titles)

我在这里找到了如何使用openpyxl设置图表绘图区的背景颜色,可以使用chart.plot_area.graphical_properties来更改背景颜色。

然而,我不知道如何改变条形图的颜色。

3个回答

8
对于2D图形,我使用graphicalProperties.line.solidFillgraphicalProperties.solidFill
wb = load_workbook('data.xlsx')
ws = wb['sheet1']

chart = BarChart()
chart.type = "col"
chart.style = 10
chart.title = "Chart Title"
chart.y_axis.title = 'Y Axis'
chart.x_axis.title = 'X Axis'

data = Reference(ws, min_col=3, min_row=1, max_row=3, max_col=3)
cats = Reference(ws, min_col=1, min_row=2, max_row=3)

chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.shape = 4

# Change bar filling and line color 
s = chart.series[0]
s.graphicalProperties.line.solidFill = "00000"
s.graphicalProperties.solidFill = "ff9900" 


ws.add_chart(chart, "A10")
wb.save("bar.xlsx")

我希望对于3D图形绘制也能够适用。

1
是的,它有效。但是理想情况下,我希望每列都有不同的自定义颜色,而现在它们都具有相同的颜色。 - Mike
@Nicolas 谢谢。有没有办法使面积图透明?你可以回复我的最新帖子吗?谢谢。 - Lynn

3
我已将one_color图表更改为带有chart.varyColors属性的multiple_color图表。
chart.varyColors = "0000FFFF"

代码中的字符串 "0000FFFF" 是 openpyxl 模块中的颜色值,你可以选择自己需要的颜色。更多信息请参见https://openpyxl.readthedocs.io/en/stable/styles.html#colours

1
如果你想让每个柱状图都有自己的颜色,就像你在回复尼古拉斯的答案中提到的那样。
slices = [DataPoint(idx=i) for i in range(3)]
sliceOne, sliceTwo, sliceThree = slices
sliceOne.graphicalProperties.solidFill = "02c212"
sliceTwo.graphicalProperties.solidFill = "d62b00"
sliceThree.graphicalProperties.solidFill = "f5ad31"
chart.series[0].data_points = slices

我知道我晚了5年,但如果有其他人需要的话。

还是有用的!谢谢你的建议。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接