【问题标题】:R中水平图例中的不同线长
【发布时间】:2022-01-20 04:49:43
【问题描述】:

我想创建一个水平图例,其中包含多行(具有不同长度)和每行下方的文本。我有以下代码:

library(RColorBrewer)

colorlevel <- brewer.pal(n = 5, name = 'Set1')

plot.new()
a <- legend("topleft",
            legend =c("", "", "", "", "", ""),
            lty = 1,
            lwd = 4,
            bty='o',
            seg.len= c(rep(1.5,5), 4),
            col = colorlevel,
            horiz = TRUE,
            trace=TRUE
)
text(a$text$x-0.05, a$text$y, c("A", "B", "C", "D", "E", "F"), pos=1)

产生以下图例:

Horizontal legend with different line lengths

但是,有些问题我无法解决:

  1. 最后一行(最大的,对应于 F)必须与所有其他行保持相同的间距,但间距很大。
  2. 虽然我希望彩色线条之间的距离相同,但有没有办法调整这种间距?
  3. 图例边框离文字太近等,可以调整吗?

提前致谢。

【问题讨论】:

    标签: r plot legend


    【解决方案1】:

    试试这个解决方案:

    library(RColorBrewer)
    
    colorlevel <- brewer.pal(n = 5, name = 'Set1')
    
    plot.new()
    a <- legend("topleft",
                legend =c("", "", "", "", "", ""),
                lty = 1,
                lwd = 3,
                bty='o',
                seg.len= rep(1.5,5),
                col = colorlevel,
                horiz = TRUE,
                trace=TRUE,
                cex = 1.3
    )
    #you can experiment more with "cex" parameter in legend and text for more accurate output
    text(a$text$x-0.06, a$text$y, c("A", "B", "C", "D", "E", "F"), pos=1)
    

    【讨论】:

    • 参数 seg.len 不能更改,因为我需要的 F 线比其他线大。问题是它与其他线相距甚远,所有线之间必须保持相等的间距。
    • @dreamco9 你认为这是真的吗?
    • 我想将图例放在图下方,以分隔 X 轴上的不同区域,并为每个区域命名
    • @dreamco9 你可以做到。但我不知道如何在一瞬间保存不同长度的图例元素和它们之间的相同空间。也许,这是真的,但我不确定......
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 2017-04-04
    • 2011-08-24
    • 2013-10-21
    相关资源
    最近更新 更多