我已经有过几次,所以这里是:我做了一些情节,其中包含一个参数估计值给出调整参数的曲线。
通常情况下,每个估算值都有SD,所以我可以在每个估算值周围显示误差条。
但是,我不喜欢错误栏,并且更喜欢它的一些平滑版本。这本身没问题(即我知道如何做到这一点)。但是,我的情节包含几条相似的曲线,每条曲线都有自己的颜色。所以我想添加一个平滑的错误区域'每条曲线的颜色与曲线本身的颜色相匹配。当然,我想透明地做到这一点,所以我仍然可以通过“错误区域”看到其他曲线。
所以,我的问题是:给定一种颜色(由数字,名称或rgb值指定---注意前两个会带来额外的问题,但这种情况经常发生,因为基本的绘图功能需要这些作为有效的颜色值),我怎样才能找到具有相同rgb但不同(给定)alpha级别(透明度)的匹配颜色。我想要一个像:
这样的功能makeTransparent<-function(someColor, alpha=100)
{
newColor<-someColor + alpha #I wish
return(newColor)
}
这适用于以下内容:
makeTransparent(2)
makeTransparent("red")
makeTransparent(rgb(0,0,1))
编辑当我想念一些明显的东西时,我讨厌它,但@themel指出了我(再次)。这是一个完整的解决方案(注意:工作矢量化,因此您可以传递多种颜色;但此时仅支持一个alpha):
#note: always pass alpha on the 0-255 scale
makeTransparent<-function(someColor, alpha=100)
{
newColor<-col2rgb(someColor)
apply(newColor, 2, function(curcoldata){rgb(red=curcoldata[1], green=curcoldata[2],
blue=curcoldata[3],alpha=alpha, maxColorValue=255)})
}
答案 0 :(得分:61)
adjustcolor
包中有一个函数grDevices
,在您的情况下就像这样:
adjustcolor( "red", alpha.f = 0.2)
答案 1 :(得分:46)
你看过?rgb
了吗?
用法:
rgb(红色,绿色,蓝色,alpha,名称= NULL,maxColorValue = 1)
也可以指定Alpha透明度值(作为不透明度, 所以'0'表示完全透明,'max'表示不透明)。如果 未指定alpha',会生成不透明的颜色。
alpha
参数用于指定透明度。 col2rgb
将以其他方式指定的R颜色拆分为RGB,以便将它们提供给rgb
。
答案 2 :(得分:5)
我认为在alpha
中指定[0,1]
更为常见。这个函数可以做到这一点,再加上几种颜色作为参数:
makeTransparent = function(..., alpha=0.5) {
if(alpha<0 | alpha>1) stop("alpha must be between 0 and 1")
alpha = floor(255*alpha)
newColor = col2rgb(col=unlist(list(...)), alpha=FALSE)
.makeTransparent = function(col, alpha) {
rgb(red=col[1], green=col[2], blue=col[3], alpha=alpha, maxColorValue=255)
}
newColor = apply(newColor, 2, .makeTransparent, alpha=alpha)
return(newColor)
}
并且,测试:
makeTransparent(2, 4)
[1] "#FF00007F" "#0000FF7F"
makeTransparent("red", "blue")
[1] "#FF00007F" "#0000FF7F"
makeTransparent(rgb(1,0,0), rgb(0,0,1))
[1] "#FF00007F" "#0000FF7F"
makeTransparent("red", "blue", alpha=0.8)
[1] "#FF0000CC" "#0000FFCC"
答案 3 :(得分:3)
转换valuable comment以回答:
使用alpha
from package scales
-第一个参数是颜色,第二个字母(0-1范围内)。
或编写公开的功能:
makeTransparent <- function(someColor, alpha=100) scales::alpha(someColor, alpha/100)
答案 4 :(得分:2)