【问题标题】:R - parse function doesn't work as expectedR - 解析功能无法按预期工作
【发布时间】:2015-12-30 18:50:20
【问题描述】:

在以下示例中(请注意 y 轴标签的差异),我使用一个变量来填充 ggplot2 中的轴标签。有趣的是,~ 产生了更大的空间,并且在放大的- 周围出现了额外的空间。

library(ggplot2)

#LabelY <- "Miles per Gallon-Car"
LabelY <- parse(text="Miles~per~Gallon-Car")

a <- ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
        ggtitle("Fuel Efficiency of 32 Cars") +
        xlab(LabelY) + ylab(LabelY) +
        theme(text=element_text(size=16))
print(a)

我使用 parse 是因为它允许我使用更复杂的示例,包括 atop 和希腊字母。

有没有一种方法可以使用 parse 来导入复杂的字符串,同时还能保留内容所需的“不那么分散”的外观?

【问题讨论】:

  • 如何说服您反对 Comic Sans 字体?
  • 你想“导入”什么样的“复杂字符串”?
  • @RomanLuštrik 我实际上并没有使用它,这只是我可以轻松修改的最适用的 MWE。我的最后一个问题是试图让字体工作,我需要一些明显可见的东西来证明成功的改变。
  • @Spacedman 总的来说,它们很简单,但就像我提到的,它们包含 atop 和希腊字符,例如atop(Release of TNF-{alpha},(Treatment/Control))。其他示例可能包含下标和上标,但使用 parse 它实际上并不是我遇到问题的字符串的汇编,因此我让示例更简单。通过导入,我的意思是这个字符串保存在数据库中,并以可变格式检索、存储和解析。
  • 那么所有额外字体的东西都与您的问题相关吗?还是使用默认字体显示?您能否重做示例以将文本放在 X 轴上,因为这样我就不会那么痛苦了(而且间距问题可能更明显)。

标签: r ggplot2 axis-labels aesthetics


【解决方案1】:

看起来用反引号括起来的连字符可以让你保留连字符而不是把它变成破折号。

这里我将新的连字符版本的轴标签放在 x 轴上,将 y 轴保留为原始进行比较。

LabelY <- parse(text="Miles~per~Gallon-Car")
LabelY2 <- parse(text="Miles~per~`Gallon-Car`")

ggplot(mtcars, aes(x=wt, y=mpg)) + geom_point() +
    ggtitle("Fuel Efficiency of 32 Cars") +
    xlab(parse(text = LabelY2)) + ylab(LabelY) +
    theme(text=element_text(size=16))

正如您在 cmets 中指出的那样,您还可以在连字符的术语周围使用大括号和单引号组合来获得相同的效果。

parse(text="Miles~per~{'Gallon-Car'}")

【讨论】:

  • 谢谢!只是为了后代,我实际上从parse(text="Miles~per~Gallon{'-'}Car") 得到了相同的效果,但没有真正的区别。再次感谢!
  • @EngBIRD 有趣。如果我尝试这样做,我会得到一个解析错误,所以我认为我一定误解了你之前的评论。我正在使用 R 3.2.3,但不知道这是否有区别。
  • 对不起,当我复制并粘贴你的最后一行时,我想我有一个错字。它应该是引号上的一对大括号,不仅是 1 个打开的关闭集,因为它是我的外部拉取值难以解析的引号。不记得了,因为我选择了你更简单、更简洁的方法。
猜你喜欢
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
相关资源
最近更新 更多