我有这个问题已经有一段时间了,但是一直没有找到解决方法。例如,当我想标记感兴趣的参数,如中心趋势(平均数、中位数等),我会创建一个垂直和/或水平线,并使用annotate进行标注。然而,我无法同时使用LaTeX和非硬编码值。下面是一个最小可重现示例:
data <- data.frame(stat = rnorm(1000))
plot <-
ggplot(data, aes(x = stat)) +
geom_histogram(aes(y=..density..), fill="aquamarine", color="black") +
geom_density(color="black", size=1) +
geom_vline(xintercept = 0, color = "blue", linetype="dashed", size = 1) +
annotate("text", x=-0.2, y=0.2,
label=paste0("Mean = ", round(mean(data$stat), 4)),
angle=90, size=7, color="black")
plot
请看此处图示:https://istack.dev59.com/QzojQ.webp 在上述示例中,我生成了一些随机正态数据,将其保存到数据框中并绘制出来。我添加了一个虚线垂直线,对应于数据的平均值,然后通过注释进行标记。需要注意的是,由于 LaTeX 运算符不起作用且随机字母对我来说不理想,因此在标签中明确写入“Mean”。
我发现的一种解决方案是在标记时使用 expression 而不是 paste0,如下所示:
data <- data.frame(stat = rnorm(1000))
plot <-
ggplot(data, aes(x = stat)) +
geom_histogram(aes(y=..density..), fill="aquamarine", color="black") +
geom_density(color="black", size=1) +
geom_vline(xintercept = 0, color = "blue", linetype="dashed", size = 1) +
annotate("text", x=-0.25, y=0.2, label = expression(mu ~ "= -0.0403"),
angle=90, size = 7, color = "black")
plot
请看这里的图表:https://istack.dev59.com/rnW5i.webp 这样我们就可以在绘图中显示LaTeX字符,例如我们的$ \mu $。但是现在的缺点是我必须在表达式字段中硬编码平均值。这不理想,我不想这样做。我想能够像下面这样做,但这并行不通:
annotate("text", x=-0.25, y=0.2,
label = expression(mu ~ round(mean(data$stat), 4)),
angle=90, size = 7, color = "black")
我一直无法找到解决方法,所以非常感谢任何帮助。