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

问题描述 投票:0回答:4

我想用 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更改背景颜色

但是,我不知道改变条形的颜色。

bar-chart openpyxl
4个回答
8
投票

对于 2D 绘图,我使用

graphicalProperties.line.solidFill
graphicalProperties.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 绘图也是如此


3
投票

我将

one_color
图表更改为具有
multiple_color
属性的
chart.varyColors
图表:

chart.varyColors = "0000FFFF"

字符串

"0000FFFF"
是openpyxl模块中的颜色值,你可以选择自己的 https://openpyxl.readthedocs.io/en/stable/styles.html#colours


1
投票

如果您希望每个条都有自己的颜色,就像您在回复 Nicolas 的答案中提到的那样。

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 年,但以防万一其他人需要它。


0
投票

您可以使用以下行更改每组数据的颜色:

chart.series[0].graphicalProperties.solidFill = 'FFFF00'
chart.series[1].graphicalProperties.solidFill = '000FFF'

其中

'FFFF00'
是您选择的颜色,
[0]
是一系列数据。

© www.soinside.com 2019 - 2024. All rights reserved.