使用带对象的多行表达式注释 ggplot 图?
Annotate ggplot plot with a multiline expression with objects?
我想在我的 ggplot 上用两行、下标和上标以及对对象的引用进行注释。
我发现 annotate()
函数调用 geom_text()
时 parse = TRUE
可以使用 plotmath
中的表达式。
如果这是我的标签:
q10 = 1.9
a = 3.9
b = -0.05
lab1 = substitute(atop(paste(Q[10], '=', q10), paste(M[O[2]], '=', a, e^(b*T))), list(q10 = q10 = 1.9, a = 3.9, b = -0.05))
然后它将与底图一起工作:
plot(1, 1, main = lab1)
但是当我尝试将它与 ggplot()
一起使用时,它会抛出一个错误:
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point() +
annotate(geom = 'text', x = 4, y = 5000, label = lab1, parse = TRUE, color = 'blue')
Error: Aesthetics must be either length 1 or the same as the data (1): label, colour
我在ggplot中发现了与多行注释相关的问题:R ggplot annotated with atop using three values and bgoup
与 ggplot 中的表达式相关:ggplot2 annotation with superscripts
但我不知道如何组合适当的答案来制作有效的注释。 ggplot2
专家有什么帮助吗?
要将 plotmath 与 ggplot 一起使用,您将其作为字符串传入——parse = TRUE
指的是解析字符串。因此:
library(ggplot2)
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point() +
annotate(geom = 'text', x = 4, y = 5000,
label = "atop(Q[10] == 1.9,M[O[2]] == 3.9*e^(-0.05*T))",
parse = TRUE, color = 'blue')
如果您需要替换到字符串中,请使用 paste
或 glue::glue
。
我想在我的 ggplot 上用两行、下标和上标以及对对象的引用进行注释。
我发现 annotate()
函数调用 geom_text()
时 parse = TRUE
可以使用 plotmath
中的表达式。
如果这是我的标签:
q10 = 1.9
a = 3.9
b = -0.05
lab1 = substitute(atop(paste(Q[10], '=', q10), paste(M[O[2]], '=', a, e^(b*T))), list(q10 = q10 = 1.9, a = 3.9, b = -0.05))
然后它将与底图一起工作:
plot(1, 1, main = lab1)
但是当我尝试将它与 ggplot()
一起使用时,它会抛出一个错误:
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point() +
annotate(geom = 'text', x = 4, y = 5000, label = lab1, parse = TRUE, color = 'blue')
Error: Aesthetics must be either length 1 or the same as the data (1): label, colour
我在ggplot中发现了与多行注释相关的问题:R ggplot annotated with atop using three values and bgoup
与 ggplot 中的表达式相关:ggplot2 annotation with superscripts
但我不知道如何组合适当的答案来制作有效的注释。 ggplot2
专家有什么帮助吗?
要将 plotmath 与 ggplot 一起使用,您将其作为字符串传入——parse = TRUE
指的是解析字符串。因此:
library(ggplot2)
ggplot(diamonds, aes(carat, price, color = cut)) +
geom_point() +
annotate(geom = 'text', x = 4, y = 5000,
label = "atop(Q[10] == 1.9,M[O[2]] == 3.9*e^(-0.05*T))",
parse = TRUE, color = 'blue')
如果您需要替换到字符串中,请使用 paste
或 glue::glue
。