c语言rgb数值颜色渐变算法,颜色渐变算法

本文介绍了一种算法,通过给定一组数据和颜色区间,根据数值大小为每个数据点分配颜色,使用RGB颜色空间并实现了从起始颜色到结束颜色的线性映射。重点讲解了如何计算颜色值并将其转换为十六进制形式。

需求:

给定一组数据,给定渐变颜色两端的颜色值,需要根据这组数据中的每个值大小为其分配一个颜色

算法:

一个需要用颜色表示值大小的数据集weightlist,给定渐变的起始颜色 colorStart={"red":255,"green":50,"blue":47},结束颜色colorend ={"red":139,"green":20,"blue":10},minNum=min(weightlist),maxNum=max(weightlist),weightlist中的一个值number,计算其对应的颜色值color

\[ \frac{number-minNum}{maxNum-minNum}=\frac{color-colorStart}{colorend -colorStart} \]

最终颜色值:

\[ color=\frac{(number-minNum)(colorend -colorStart)}{maxNum-minNum}+colorStart \]

将colorR,colorG,colorB分别代入计算

实现

def getColorstr(value): #将rgb颜色转换为16进制

digit = list(map(str, range(10))) + list("ABCDEF")

if isinstance(value, tuple):

string = '#'

for i in value:

a1 = i // 16

a2 = i % 16

string += digit[a1] + digit[a2]

return string

def gerColorOfWeight1(minNum,maxNum,colorStart,colorend,number): #颜色,根据数值均分

colorR=(colorend["red"]-colorStart["red"])*(number-minNum)/(maxNum-minNum)+colorStart["red"]

colorG=(colorend["green"]-colorStart["green"])*(number-minNum)/(maxNum-minNum)+colorStart["green"]

colorB=(colorend["blue"]-colorStart["blue"])*(number-minNum)/(maxNum-minNum)+colorStart["blue"]

color= "rgb("+str(int(colorR))+','+str(int(colorG))+','+str(int(colorB))+')'

#color=getColorstr((int(colorR),int(colorG),int(colorB)))#转换为16进制颜色

return color

colorYouNeed=gerColorOfWeight1(min(weightlist),max(weightlist),{"red":255,"green":50,"blue":47} ,{"red":139,"green":20,"blue":10} ,1000* errornum/linenum)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值