我在使用R中的函数多边形着色某些区域时遇到了问题。如果这些区域有公共部分,则最后一个阴影区域将覆盖前一个区域。但现在,我确实希望看到这种现象,并希望保持原有的界限。我该怎么办? 请参阅以下图像作为示例:
绘制此图像的代码为:
plot(variance_five[51:60,2],type="n",ylim=c(0,0.1))
for(i in 1:6)
{
polygon(c(1:10,10:1),c(variance_five[(10*i-9):(10*i),1],variance_five[(10*i): (10*i-9),3]),lty=2,col=i)
lines(variance_five[(10*i-9):(10*i),2])
}
我们可以看到最后一个阴影区域(紫色)覆盖了一些蓝色和浅蓝色部分,我应该保留所有区域的所有边界和公共区域的颜色是这些颜色的总和效果?谢谢!
答案 0 :(得分:1)
您想要使用透明度。 alpha
包中的函数scales
将为任何颜色添加透明度。我建议在循环之前设置一个颜色矢量并使它们透明,例如
my_colors <- rainbow(6)
require(scales)
my_colors <- alpha(my_colors, alpha = 0.5)
然后在循环内部用col = i
替换col = my_colors[i]
。
当然,您可以根据需要调整alpha级别(0表示完全透明,1表示完全不透明)。 scale包还提供了一个函数show_col
,我发现它在选择颜色时非常有用。尝试
show_col(rainbow(6))
show_col(heat.colors(6))
show_col(cm.colors(6))
我应该注意到rainbow
等。以alpha
为参数,因此你不需要需要 alpha函数,但更常见的是使用alpha
函数,如果你'可以使用其他R颜色的函数'得到了最爱。 (我个人喜欢dodgerblue2
和firebrick4
。)