我只想简单地在我的ggplot上添加一个带有指数函数的注释,如下图所示: excel graph
以下是数据:Data
这是我到目前为止使用的代码:
dfplot<-ggplot(data, aes(dilution.factor,Concentation)) +
geom_point(size=3)+ geom_smooth(method="auto",se=FALSE, colour="black")+
scale_y_continuous(breaks=seq(0,14,by=2))
dfplot2<-dfplot+labs(x=('Dilution Factor'), y=expression('Concentration' ~
(ng/mu*L)))+
theme_bw() + theme(panel.border = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.text = element_text(colour="black"),
axis.line = element_line(colour = "black"))
dfplot3<- dfplot2+annotate("text", x=3, y=10, label = "R^2 == 1",parse=TRUE)
dfplot3
dfplot4<-dfplot3+annotate("text", x=3, y=11, label =
as.character(expression("y=13.048e^-{0.697x}" ,parse=TRUE)))
dfplot4
我可以一直把r ^ 2值(dfplot3)dfplot3放在一边 由于某种原因,我不能让它添加指数方程。我不断收到此错误: 错误:美学必须是长度1或与数据(1)相同:标签
我做错了什么?
答案 0 :(得分:2)
对您正在使用的as.character(expression())
语法不太确定,但在解析注释文本时,ggplot2并不了解“人类”。将数字放在字母13.084e
旁边的样式表示法快捷方式,你需要明确告诉它这是乘法。您还需要==
而不是=
。
annotate("text", x=3, y=11, label = "y == 13.048*e^-{0.697*x}", parse =TRUE)
编辑:我发现您在parse = TRUE
电话中加入了expression
,我认为这是一个错误。要使用expression
执行此操作,您可以编写以下内容,但实际上这不是必需的:
annotate("text", x=3, y=11, label = as.character(expression("y == 13.048*e^-{0.697*x}")), parse = T)