ggplot2:带有文本,子/上标和计算值的注释

时间:2017-12-22 19:07:05

标签: r ggplot2 annotations

我在这里搜索了一段时间,之前的问题/答案部分回答了我的问题。我正在学习R,来自Matlab。正如标题所说,我对绘图注释有疑问。在Matlab中,使用包含各种数据格式的绘图注释相当简单,我在R中寻找类似的东西。我已经发现paste并设法将文本和数字放入一个注释中我也是想出(在一定程度上......)parse的作用,例如显示r平方时。我的问题是,如何将代码片段中的两个注释合并为一个注释而不用R对我大喊大叫?我的解决方案有两个注释适用于我需要的东西,但我只是想知道如何做...

a <- 30 # some coefficients
b <- 70
r2 <- 0.87
anno1 <- paste("y = ",b,"ln(x) + ",a) # first annotation with a random equation
anno2 <- paste("r^2 == ", r2) # second annotation with a random r squared

Pdata <- data.frame("X" = 1:10, "Y" = 1:10) # some data

ggplot(Pdata,aes(x=Pdata$X,y=Pdata$Y)) +
  geom_point() +
  annotate("text", x=2, y=8, label=anno1, parse=FALSE) +
  annotate("text", x=2, y=7, label=anno2, parse=TRUE)

谢谢你们所有人!

2 个答案:

答案 0 :(得分:2)

我需要一段时间来解决这个问题(对于我自己的项目),但这是一个解决方案:

anno3 <- paste("'y ='~",b,"~'ln(x) +'~",a,"~r^2==~", r2)

使用+ annotate("text", x=2, y=6, label=anno3, parse=TRUE)

将其添加到您的地块中

单引号标识要评估的文本。结合起来,粘贴的结果应该像表达式一样写。

答案 1 :(得分:1)

以下是使用bquote

执行请求操作的一种方法
ggplot() +
  geom_point(aes(x = 1:4, y = 1:4)) +
  annotate("text", x=2, y=3,
            label = deparse(bquote(~y ==~  .(b) ~ln(x)~ + .(a)  ~r^2 ==~  .(r2))),
            parse = T)

bquote引用其论点,除了包含在。()中的术语被评估为 annotate不支持表达式,让它工作的一个技巧是解析它然后再解析它

enter image description here