注释指数函数ggplot2

时间:2018-02-04 03:13:00

标签: r text ggplot2 annotations labels

我只想简单地在我的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)相同:标签

我做错了什么?

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)

enter image description here

编辑:我发现您在parse = TRUE电话中加入了expression,我认为这是一个错误。要使用expression执行此操作,您可以编写以下内容,但实际上这不是必需的:

annotate("text", x=3, y=11, label = as.character(expression("y == 13.048*e^-{0.697*x}")), parse = T)