欢迎来到破竹的博客

三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。人生

颜色渐变算法

需求:

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

算法:

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

numberminNummaxNumminNum=colorcolorStartcolorendcolorStart

最终颜色值:

color=(numberminNum)(colorendcolorStart)maxNumminNum+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)
posted @   破竹  阅读(4181)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示

目录导航