ggplot facet_wrap with italics

时间:2017-11-28 19:33:07

标签: r ggplot2

我有一个我正在绘制的数据集,其中包含变量的面(在玩具数据集中 - 密度为2种)。我需要使用实际的变量名来做两件事:1)斜体化物种名称,2)使用2 / n / m2正确上标(或ASCII编辑,更容易)。

它类似于this,但我似乎无法使其适用于我的情况。

玩具数据

library(ggplot2)
df <- data.frame(x = 1:10, y = 1:10, 
 z = rep(c("Species1 density (n/m2)", "Species2 density (m/m2)"), each = 5),
 z1 = rep(c("Area1", "Area2", "Area3", "Area4", "Area5"), each = 2))

ggplot(df) + geom_point(aes(x = x, y = y)) + facet_grid(z1 ~ z)

当我尝试在天真的答案中使用代码时,我收到一个错误(找不到变量z)。如何解决分面中的2个变量?

1 个答案:

答案 0 :(得分:2)

稍加修改即可使链接中的代码生效。我已经更改了代码以使用data_frame来停止将字符向量转换为因子,并从代码中获取公共信息,以便可以通过贴标机添加(否则会很痛苦)使一半的文字斜体)

library(tidyverse)
df <- data_frame(
        x = 1:10,
        y = 1:10, 
        z = rep(c("Species1", "Species2"), each = 5),
        z1 = rep(c("Area1", "Area2", "Area3", "Area4", "Area5"), each = 2)
      )

ggplot(df) + 
  geom_point(aes(x = x, y = y)) + 
  facet_grid(z1 ~ z, labeller = label_bquote(col = italic(.(z))~density~m^2))