I am having trouble figuring out how to write out an equation using annotate in ggplot2. 
Here is an example of what I want to get, I just can't figure out how to get the superscripts in the equation and R^2 there.
Here is the code I have so far:
df4 <- data.frame(hours=c(0,1,3,5,12,24,48,96,168,336,504,720), copies=c(603.3,406,588,393.27,458.47,501.67,767.53,444.13,340.6,298.47,61.42,51.6))
p1 <- ggplot(df4, aes(x=hours, y=copies)) geom_point() stat_smooth(method = 'nls', method.args = list(start = c(a=543.4172,b=-0.00247)), formula = y~a*exp(b*x), se=FALSE, linetype=2, colour="pink") theme_classic() xlab("") ylab("")
annotate("text", x = 400, y = 750, label = "N(t)=543.4172e^-0.00247259t\nR^2 = 0.6933", color = "black", hjust = 0, vjust = 1)
ggtitle(expression("eDNA pH 4"))
p1
I've been looking at other posts but just can't seem to get it to work.
Thanks in advance for any help or advice!
CodePudding user response:
Another option would be to use parse=TRUE in annotate. Additionally your label requires some fixes to make it a valid expression. See ?plotmath.
Note, TBMK you can't have any line breaks in math expressions. For that reason I added the two lines of your label via two annotates where I have set vjust so that they are plotted on top of each other:
df4 <- data.frame(hours = c(0, 1, 3, 5, 12, 24, 48, 96, 168, 336, 504, 720), copies = c(603.3, 406, 588, 393.27, 458.47, 501.67, 767.53, 444.13, 340.6, 298.47, 61.42, 51.6))
library(ggplot2)
p1 <- ggplot(df4, aes(x = hours, y = copies))
geom_point()
stat_smooth(
method = "nls", method.args = list(start = c(a = 543.4172, b = -0.00247)), formula = y ~ a * exp(b * x),
se = FALSE, linetype = 2, colour = "pink"
)
theme_classic()
xlab("")
ylab("")
annotate("text",
x = 400, y = 750, label = "K(t) == 543.4172^{-0.00247259*t}",
parse = TRUE,
color = "black", hjust = 0, vjust = -.1
)
annotate("text",
x = 400, y = 750, label = "R^2 == 0.6933",
parse = TRUE,
color = "black", hjust = 0, vjust = 1.1
)
ggtitle(expression("eDNA pH 4"))
p1

CodePudding user response:

