R - ggplot2可用于解析的换行符(text = X)

时间:2015-04-09 00:43:31

标签: r parsing text ggplot2 newline

我试图在ggplot2的轴标题中插入一个故意的换行符。如下面的MWE所示,我使用parse(text=X)来评估希腊字符和子/超级脚本的可能LaTeX样式。我已经看到ggpot2和表达式对象的标签工具应该能够处理新的行字符,例如\n。但我承诺使用parse(text=X)。然而,我没有成功地将它包含在我的x和y轴标题字符串中。

  • 在硬编码的MWE中,我放松了\n
  • 之后的所有内容
  • 当我从外部表中导入*{"\n"}*时,我得到与*相同的行为。

这让我怀疑parse(text=X)不支持新的线路符号。如果是这种情况,插入新行的适当方法是什么?

在过去,我已经能够使用atop但是这次尝试使用不同的东西,因为它在行间留下了太多空白。所以,我会接受一个答案,演示如何自定义atop

的间距

MWE:

library(ggplot2)
library("grid")

print("Program started")

gg <- ggplot(diamonds, aes(clarity, fill=cut))
gg <- gg + geom_bar(position="dodge")
gg <- gg + labs(y=parse(text="ahhhh\nWe~are~here"), x=parse(text="ahhhh\nWe~are~here"),title="title")

gg <- gg + theme(
                legend.justification=c(0,1),
                legend.position=c(0,1),
                legend.title=element_blank(),
                plot.background=element_rect(fill="red")
);
gg <- gg + guides(fill=guide_legend(title.position="top"))

print(gg)

print("Program complete - a graph should be visible.")

1 个答案:

答案 0 :(得分:2)

在双引号内用单引号括起你的文字,你会在轴上得到两行标签。

gg + labs(y=parse(text="'ahhhh\nWe~are~here'"), x=parse(text="'ahhhh\nWe~are~here'"),title="title")

您可以使用单引号字符串和表达式的组合构造plotmath输出,但有一些限制 - 例如,单引号字符串不能以\n结尾 检查此代码

parse(text = "'ahhhh\nWe' ~are%=>% bold(here[123])")      # it works
parse(text = "'ahhhh\n' We~are%=>% bold(here[123])")      # it throws an error