【问题标题】:Histogram legend in RR中的直方图图例
【发布时间】:2023-11-05 02:04:01
【问题描述】:

我有一个表格的直方图

rm(list = ls())
set.seed(1)
x1 <- rnorm(100, mean=1)
x2 <- rnorm(100)
hist(x1, col="black", ylim=c(0,30), xlim=range(pretty(range(x1, x2))), xlab="x-axis label", ylab="y-axis label", main="", cex.lab=1.3, las=1)
hist(x2, xlab="", ylab="", main="", ylim=c(0,yhigh), xlim=c(0,.05), density = 20, col= "gray", axes=F, add=TRUE, lty=1)
lines(density(x2, from = 0, to = max(x2)), col ="firebrick", lwd = 1.5)
legend("topright", c("group1", "group2", "density"), lty=c(1,1, 1), bty = "n")

我无法正确显示图例,有一个实心黑条、一个阴影条和一条红线来匹配数据(我知道密度线不正确,但包括以便有一条线在这个例子中)。有人知道怎么做吗?

【问题讨论】:

    标签: r histogram legend


    【解决方案1】:
    legend("topright", c("group1", "group2", "density"), 
        lty=c(1,2, 1), bty = "n", 
        fill=c("black", "gray", "firebrick"))
    

    已编辑:包含具有适当值的角度和密度参数

    legend("topright", c("group1", "group2", "density"), lty=c(1,2, 1), 
        bty = "n", angle = c(0, 45, 0), density = c(100, 30, 100),
        fill=c("black", "gray", "firebrick"))
    

    Edited2:根据评论示例

    legend("topright", c("group1", "group2"), 
        bty = "n", angle = c(0, 45), density = c(100, 30),
        fill=c("black", "gray"))
    
    legend(2.7, 28, "density", lty = 1, bty = "n", lwd=2, col = "firebrick")
    

    【讨论】:

    • 这很接近,但是第 2 组图例中的条形填充应该像直方图中的条形一样被阴影化
    • 有什么方法可以让密度线的图例标记成为一条线而不是一个矩形?
    • 用 2 行代码定义图例。有几种选择。
    【解决方案2】:

    这是你要找的吗?

    legend("topright", 
           c("group1", "group2", "density"), 
           lty=c(1, 2, 1), 
           col=c("black","gray","firebrick"), 
           bty = "n")
    

    【讨论】:

    • 之前的解决方案更接近一些,因为图例中第 1 组和第 2 组的符号是条形而不是线条。然而,那个没有得到阴影填充。