R-向多边形绘图添加颜色图例

R-向多边形绘图添加颜色图例,r,sp,R,Sp,我想创建扇区,然后给它们上色,下面的代码就是这么做的,但我还想添加一个图例来表示从提供的色调中选择的颜色光谱。它使用为颜色提供的color.heat和vector中的颜色作为其a比率,该颜色始终介于0和1之间 circs <- function(radii, sectors=4) { radii <- sort(radii) rads <- seq(0, 2*pi, length=2*length(radii)*sectors)# sample at these radia

我想创建扇区,然后给它们上色,下面的代码就是这么做的,但我还想添加一个图例来表示从提供的色调中选择的颜色光谱。它使用为颜色提供的color.heat和vector中的颜色作为其a比率,该颜色始终介于0和1之间

circs <- function(radii, sectors=4) {
 radii <- sort(radii)
 rads <- seq(0, 2*pi, length=2*length(radii)*sectors)# sample at these radians
do.call(rbind, lapply(radii, function(r)                   # points for drawing circles
data.frame(X=r*cos(rads), Y=r*sin(rads), 
           sector=rep(1:sectors, each=length(rads)/sectors),
           theta=rads, radius=r)))
}

drawCirc <- function(radii, sectors, hues=NULL, densities=NULL, ...) {
polys <- circs(radii, sectors)
 if (missing(hues)) {
 colors <- colorRampPalette(c("green","yellow","red","blue"))(sectors*length(radii))
 } 
else 
colors <- heat.colors(n=sectors*length(radii))
ind=0
plot(polys[,1:2], type="n" ,...)     # blank plot
for (i in seq_along(radii))  {  # add polygons
 for (j in 1:sectors) {
   ind <- ind+1
   color <- colors[ind]
  with(polys[polys$sector==j,],
       if (i == 1) {
         polygon(x=c(0, X[radius==radii[i]], 0), y=c(0, Y[radius==radii[i]], 0), 
                 col=color, density=densities[ind])
       } else
         polygon(x=c(X[radius==radii[i-1]], rev(X[radius==radii[i]])),
                 y=c(Y[radius==radii[i-1]], rev(Y[radius==radii[i]])), 
                 col=color, density=densities[ind]))
  }
 }
}
如何创建图例来表示颜色并将其添加到图表中


我试过了,但不幸的是没能添加传奇

在关闭最后一个花括号之前,您可以在代码中函数
drawCirc()
的末尾添加以下行:

 nColors <-sectors*length(radii)
 nLegend <- 5
 legend("topleft",legend=c(formatC(rev(seq(0,1,1/(nLegend-1))),format="f",digits=2)), fill=c(colors[seq(0,nColors,nColors/nLegend)]))

nColors由于RHertel为一个传奇人物提供了答案,如果你现在需要一个酒吧,可以问一个新问题。
 nColors <-sectors*length(radii)
 nLegend <- 5
 legend("topleft",legend=c(formatC(rev(seq(0,1,1/(nLegend-1))),format="f",digits=2)), fill=c(colors[seq(0,nColors,nColors/nLegend)]))