Loading... # 引言 项目需求,需要很清晰的显示出数值的差异 ![image.png](https://www.zunmx.top/usr/uploads/2024/06/1734927955.png) # 编码思路 数据源,确定数据源是首要目标,因为项目中的数据源是这种格式的 | col1 | col2 | col3 | | --- | --- | --- | | 20240101 | 0 | 12.34 | | 20240101 | 1 | 12.45 | | 20240101 | 2 | 12.56 | | 20240101 | 3 | 12.67 | | 20240101 | 4 | 12.78 | | 20240102 | 0 | 13.78 | | 20240102 | 1 | 13.78 | | ... | ... | ... | 为了保证是阶梯形状,需要手动搞一下,当然使用`df.pivot(index='date', columns='col', values='value')` 首先需要确认最小值和最大值,这里如果使用的是DataFrame,可以使用下面的方式获取 ```python n_max = source[列].max() n_min = source[列].min() ``` 计算数值所对应的颜色 ```python green = [68, 148, 88] red = [226, 94, 72] def get_color(value): scaled_value = 1- ( ((value - n_min) / (n_max - n_min))) r = hex(int(scaled_value * (red[0] - green[0]) + green[0]))[2:] g = hex(int(scaled_value * (red[1] - green[1]) + green[1]))[2:] b = hex(int(scaled_value * (red[2] - green[2]) + green[2]))[2:] if len(r) == 1: r = '0' + r if len(g) == 1: g = '0' + g if len(b) == 1: b = '0' + b print(r, g, b) return r + g + b ``` 上色 ```python sheet.cell(i, j).fill = openpyxl.styles.PatternFill(start_color=get_color(sheet.cell(i, j).value), end_color=get_color(sheet.cell(i, j).value), fill_type='solid') ``` # 结语 主要是用于范围内颜色渐变,scaled_value 里面的 `1- ` 也可以尝试去掉,看看差异 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏