如何格式化ggplot2中的标题

时间:2015-10-31 04:25:59

标签: r ggplot2

我有一个名为“catch”的数据,观察结果如下:

x  y
0.50 3.66
0.63 3.95
0.77 5.82
0.92 7.38
1.07 8.58
1.24 9.31
1.42 9.52
1.61 9.52
1.81 9.58
2.04 9.54
2.29 9.56
2.56 9.44
2.87 9.07
3.21 8.61
3.61 7.92
4.09 7.04
4.67 5.93
5.43 4.52
6.52 2.90
8.43 0.63

我在R:

中使用了这段代码
library(ggplot2)
ccplot <- ggplot(data = catch, aes(x = x, y = y)) +
          geom_point(shape = 19, colour = "#0072B2")

ccplot <- ccplot + geom_abline(intercept = 14.58, slope = -1.85, col = "#D55E00")

ccplot2 <- ccplot + 
           xlab("time") + 
           ylab(expression(paste("ln[C(L1, L2)]/(", Delta, "t)")))

ccplot2 + ggtitle(expression(paste("Length-Converted Catch Curve\n(for Z=1.85; M(at 23"*degree*"C)=0.69; F=1.16; E=0.63"), hjust = 0))

当打印的地块在数字23和度数符号之间有一个很大(遥远)的空间时,会出现问题。

The plot printed with the above code

如何格式化标题以便空间消失?或者还有其他方法可以在ggplot2中完成正确的标题吗?

提前谢谢。

1 个答案:

答案 0 :(得分:2)

你可能最好使用unicode度符号,而不是在这种情况下尝试使用plotmath。

ccplot2 + ggtitle(expression("Length-Converted Catch Curve\n(for Z=1.85; M(at 23\u00B0C)=0.69; F=1.16; E=0.63)"), hjust=0)

您还可以使用atop()表达式进行布局

ccplot2 + ggtitle(expression(atop("Length-Converted Catch Curve","(for Z=1.85; M(at 23"~degree~"C)=0.69; F=1.16; E=0.63)")))

您的代码发生的是它打印第一个字符串(使用新行),然后当您切换到具有度数的数学模式时,退出字符串并从右侧开始双线的字符串。