使用表达式将文本添加到R图

时间:2014-03-16 20:24:05

标签: r text ggplot2

我正在疯狂地策划完成我的MS。使用mtexttext添加解释性文本很容易,添加表达式也很简单,但是当我需要添加它们时,我仍然遇到问题。

plot(1:598,xaxt='n',yaxt='n', type="l")
text(475,200,expression(paste(
"   RMSE=Root Mean Squared Error
MAD=Mean Absolute Deviance      
Average RMSE=5.78","",m^3/h,"","
","","Average MAD=4.47", "",m^3/h, sep = "")), cex=1)

我的文本和表达式正在运行,但为什么在RMSE = 5.78之后存在较大的差距,为什么在第一个表达式之后文本空间不会缩小?我似乎不明白expressionpaste是如何协同工作的。我是否被迫为每一行指定单独的x,y?

奖金问题!!我一直在看ggplot2,它会产生一些看起来很流畅的漂亮图形,但许多常见的绘图参数都不同。老实说,我发现学习Matlab更容易。我一直在用cairo导出我的情节,这使我可以制作一些高分辨率和相当专业的质量图表。我可以用常规绘图功能做我需要的任何事情。我的问题是,如果你想要制作高质量的可发布数据,那么ggplot真的可以更快地绘制,或者它的强度使得快速数字看起来不错?对我来说,当你想要指定很多细节时,ggplot似乎变得同样复杂。

2 个答案:

答案 0 :(得分:2)

我认为您可以使用this问题的答案。对于您的情况,例如:

plot(1:598,xaxt='n',yaxt='n', type="l")

my_text <- list( bquote( "RMSE=Root Mean Squared Error" ) ,
                 bquote( "MAD=Mean Absolute Deviance" ) ,
                 bquote( paste( "Average RMSE=5.78" , m^3/h) )  ,
                 bquote( paste( "Average MAD=4.47", m^3/h ) ) )

mtext(side=1,do.call(expression, my_text), line=-1:-4, adj=0)

line参数将每个bquote放在一个单独的行(-1到-4)上。您可能需要对adjpadj进行一些调整才能获得正确的排名 - 请参阅?mtext

对于奖金问题:我更喜欢使用常规绘图功能,因为我发现更容易完全控制这些功能,例如:超出默认颜色和间距。通过一些调整,我也更喜欢基本图形的简单外观到ggplot外观。我为所有科学出版物使用常规绘图功能,从未遇到过问题。

答案 1 :(得分:0)

Ggplot是我首选的软件包,但我是一个新手来处理bquote(),do.call()和expression()。

我创建了基本情节代码的这个小对应物,并希望有人可以解释如何做以实现类似的注释图:

my_text <- list( bquote( "RMSE=Root Mean Squared Error"),
                 bquote( "MAD=Mean Absolute Deviance"),
                 bquote( paste( "Average RMSE=5.78")),
                 bquote( paste( "Average MAD=4.47")))
x <- seq(1:598)
y <- seq(1:598)
df <- as.data.frame(cbind(x,y))
ggplot(df, aes(x=x, y=y)) +
  geom_point() + 
  annotate("text", label = my_text, x=100, y=100)