【问题标题】:Plotting multiple legends绘制多个图例
【发布时间】:2012-05-01 10:04:42
【问题描述】:

如何用一条语句绘制多个图例? 示例:

start <- seq(20,35, 5)
end <- seq(39,42, 1)
y <- seq(1,4,1)
name <- c('a', 'b', 'c', 'd')
plot(1, xlim=c(5,50), ylim=c(0,5))
rect(start, y, end, 1.1:4.1, col="black")
legend(end[1],y[1], name[1], xjust=0, yjust=0.5)
legend(end[2],y[2], name[2], xjust=0, yjust=0.5)
legend(end[3],y[3], name[3], xjust=0, yjust=0.5)
legend(end[4],y[4], name[4], xjust=0, yjust=0.5)

最后四行应合并为一个命令。 在此先感谢您的帮助

【问题讨论】:

  • 嗯,legend 可以做多行,所以我想知道你是否试图滥用 legend 给你想要的东西。如果您的代码生成的图形与您想要的非常相似,您可以使用text()rect() 来实现。
  • 哦,这很简单!非常感谢您的文字建议!
  • 只是 FWIW,因为 legend 旨在在一个框内绘制一堆信息,所以可以在图表的不同位置有多个图例框,但每个框都需要自己的代码行. (这是 OT - 这不是用户 [randomnmber] 正在寻找的布局)

标签: r


【解决方案1】:

您可以使用1:4 范围内的索引进行循环(1 到endy 的长度)。这可以使用for 循环来实现,或者在R 风格中使用sapply 来实现:

sapply(seq_along(y), function(i) {
   legend(end[i],y[i], name[i], xjust=0, yjust=0.5)
 })

【讨论】:

  • 你能把你的答案扩大一点吗?这在技术上是正确的,但 OP 可能不知道你在做什么。顺便说一句,我编辑了更多细节。
猜你喜欢
  • 2015-12-31
  • 1970-01-01
  • 2013-02-28
  • 2019-02-22
  • 1970-01-01
  • 2021-09-23
  • 1970-01-01
  • 2016-01-02
  • 2019-10-18
相关资源
最近更新 更多