【问题标题】:Overlay two circles in a legend of an R plot在 R 图的图例中叠加两个圆圈
【发布时间】:2016-04-15 07:41:10
【问题描述】:

在 R 中,我可以像...一样编写图例项吗?

我将数据绘制为红点,上面覆盖着红色或橙色的外圈,这些外圈的大小代表一个属性,外圈的颜色代表一个属性。我怎么能在传说中重复呢?

到目前为止,我只有传说......

legend("topleft",
  legend = c("elevation of centerline", "gradient", "boulders", "boulders in steps", "boulders not in steps"),    
  lty=c(1,1,0,0,0), pch=c(NA, NA, 19, 19,19), col=c("black", "gray", "red", "orange", "green"),
  pt.cex=c(0.8, 0.8, 0.8, 2, 2)
)

我试图给第三个元素一个向量,例如

 pch=c(NA, NA, c(19, 19), c(19,19))

运气不好。

【问题讨论】:

  • 您已经尝试过什么了吗? ggplot 可以做到这一点。

标签: r plot legend


【解决方案1】:

如果您尝试创建“项目 A”和“项目 B”符号,除了您当前使用的其他 legend 参数(例如 @987654326 @、pchcolpt.cex)。使用下面的示例并调整代码以查看这些参数如何相互交互:

x=seq(1,10,1)
y<-seq(5,50,5)
z<-rep(c(1:2),5)
df<-data.frame(x,y,z)
df$z<-factor(df$z)

plot(y~x,data=df,type="l",lty=1,lwd=1,col="grey60")
points(y~x,data=df[df$z==1,],pch=16,col="orange",cex=df$x[df$z==1])
points(y~x,data=df[df$z==1,],pch=16,col="red",cex=1)
points(y~x,data=df[df$z==2,],pch=16,col="green",cex=df$x[df$z==2])
points(y~x,data=df[df$z==2,],pch=16,col="red",cex=1)

legend("topleft",legend=c("Item A","Item B"),pch=c(21,21),col=c("green","orange"),
       pt.bg=c("red","red"),pt.lwd=c(6,6),lty=c(0,0),pt.cex=c(2,2),cex=1)

【讨论】:

  • 好的,这是一个解决方案。有点hacky,但适用于这种特殊情况!谢谢。
【解决方案2】:

我知道这个问题很老,但作为参考,我认为再次调用图例以覆盖其中的红点更容易。

legend("topleft",
  legend = c("elevation of centerline", "gradient", "boulders in steps", "boulders not in steps"),    
  lty=c(1,1,0,0), pch=c(NA, NA, 19,19), col=c("black", "gray", "orange", "green"),
  pt.cex=c(0.8, 0.8, 2, 2)
)


legend("topleft",
  legend = c("elevation of centerline", "gradient", "boulders in steps", "boulders not in steps"),   
  lty=c(1,1,0,0), pch=c(NA, NA, 19,19), col=c(NA, NA, "red", "red" ),
  pt.cex=c(0.8,0.8,0.8,0.8)
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 2016-09-29
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多