我有一个值列表,应该用特定颜色绘制到 map 上。
映射到 map 的绘制已经完成,但我需要找出一种方法将值 n 映射到代表其值的颜色。
到目前为止,我的解决方案是根据 min 和 max 对值进行归一化,然后将它们分配给十六进制颜色 0最低和 255 最高。这当然将我自己限制在灰度范围内。这是代码:
$color = ($value / $max) * 255 // (min is zero)
但是,如果值应该从蓝色变为红色,该怎么办呢? 有没有可以解决这个问题的通用库或工具?到目前为止,我还没有找到任何东西。
最佳答案
可能有库可以做到这一点。但是,让我们对一般原则做一个简短的热身。一般来说,您有以下选择:
$coloridx=array(0=>'#FFFFFF',1=>'#FFEE00',...);如果您将算法纳入考虑范围,您必须了解没有true 或false。这一切都取决于你想实现什么。在某些情况下,将绿色的变化呈现为 n=0..10,然后在 n>10 以外的所有内容中呈现红色到黑色是有意义的。上限和乘数有助于设置重音。诸如此类。
实现线性渐变的一种方法是:
function lineargradient($ra,$ga,$ba,$rz,$gz,$bz,$iterationnr) {
$colorindex = array();
for($iterationc=1; $iterationc<=$iterationnr; $iterationc++) {
$iterationdiff = $iterationnr-$iterationc;
$colorindex[] = '#'.
dechex(intval((($ra*$iterationc)+($rz*$iterationdiff))/$iterationnr)).
dechex(intval((($ga*$iterationc)+($gz*$iterationdiff))/$iterationnr)).
dechex(intval((($ba*$iterationc)+($bz*$iterationdiff))/$iterationnr));
}
return $colorindex;
}
$colorindex = lineargradient(
100, 0, 0, // rgb of the start color
0, 255, 255, // rgb of the end color
256 // number of colors in your linear gradient
);
$color = $colorindex[$value];
我更新了代码以添加 dechex,它反馈评论。
关于php - 将值映射到色标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19210306/
如果names为nil,则以下中断。我怎样才能让这个map只有在它不是nil时才执行?self.topics=names.split(",").mapdo|n|Topic.where(name:n.strip).first_or_create!end 最佳答案 其他几个选项:选项1(在其上执行map时检查split的结果):names_list=names.try(:split,",")self.topics=names_list.mapdo|n|Topic.where(name:n.strip).first_or_create!e
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
在此处阅读有关SO的各种解释,它们是这样描述的:map:Themapmethodtakesanenumerableobjectandablock,andrunstheblockforeachelement注入(inject):Injecttakesavalueandablock,anditrunsthatblockonceforeachelementofthelist.希望你明白为什么我觉得它们表面上看起来很相似。我什么时候会选择一个而不是另一个,它们之间有什么明显的区别吗? 最佳答案 如果您认为inject也别名为reduce,这
我很难给出正确的答案,所以我会在这里征求我的问题。我正在研究RESTFulAPI。自然地,我有多种资源,其中一些由父子关系组成,一些是独立资源。我有点困难的地方是弄清楚如何让那些将根据我的API构建客户端的人更容易。情况是这样的。假设我有一个“街道”资源。每条街道都有多个住宅。SoStreet:has_manytoHomes和Homes:belongs_toStreet。如果用户想要在特定的home资源上请求HTTPGET,以下应该可行:http://mymap/streets/5/homes/10这允许用户获取ID为10的房屋的信息。直截了当。我的问题是,我授予用户访问权限是否违反了
文章目录概念索引相关操作创建索引更新副本查看索引删除索引索引的打开与关闭收缩索引索引别名查询索引别名文档相关操作新建文档查询文档更新文档删除文档映射相关操作查询文档映射创建静态映射创建索引并添加映射概念es中有三个概念要清楚,分别为索引、映射和文档(不用死记硬背,大概有个印象就可以)索引可理解为MySQL数据库;映射可理解为MySQL的表结构;文档可理解为MySQL表中的每行数据静态映射和动态映射上面已经介绍了,映射可理解为MySQL的表结构,在MySQL中,向表中插入数据是需要先创建表结构的;但在es中不必这样,可以直接插入文档,es可以根据插入的文档(数据),动态的创建映射(表结构),这就
这是我正在尝试做的事情的本质,但“中断”不正确:needle=nilhaystacks.eachdo|haystack|needle=haystack.look_for_needle()breakifneedleend这更短,但它会遍历每个干草堆(至少不看),即使它不需要:needle=nilhaystacks.eachdo|haystack|needle||=haystack.look_for_needle()end这是一个单行代码,但(我相信)它并不懒惰,所以它做了不必要的工作:needle=hackstacks.map{|h|h.look_for_needle()}.detect
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?
我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob
Lisp是否适合Web编程/应用程序(交互式),就像ruby和php一样?需要考虑的事情是:易于使用可部署性难度(尤其是对于编程初学者而言)(编辑)在阅读PaulGraham'sessay之后,我特别提到了CommonLisp.将是我的第一门编程语言。在这方面。这样做合适吗?我听说Clojure的宏功能不如CommonLisp的强大,这就是我尝试学习Clojure的原因。它教授编程并且非常强大。 最佳答案 Lisp是一个语系,而不是单一的语言。为了稍微回答您的问题,是的,存在用于各种Lisp方言的Web框架,例如用于Common
我参与了一个必须使用Perl的新项目。我来自一个很好的Ruby基础,并且想要快速介绍或映射Perl和Ruby,因为我听说Perl和Ruby在语法上非常接近(对功能一无所知)。你对我有什么建议吗?您推荐哪本很棒的Perl书籍作为扩展引用?目前常用的Perl版本是什么? 最佳答案 我支持Nathan的书籍推荐,不过我也会提到BeginningPerl。两个额外功能是(1)它可以免费(合法)获得onlineinitsfirstedition(注意:该站点现在超时,我不确定这是否是暂时的)并且(2)它涵盖了与LearningPerl和Int