r - 以编程方式在 ggplot 中使用 facets 设置轴面

标签 r ggplot2 tidyverse

如果尝试以编程方式设置轴标签的字体,一个过程在没有刻面的情况下工作,但在刻面存在时中断。例如

library(tidyverse)
library(magrittr)

data("mtcars")

mtcars  %<>% 
  rownames_to_column %>% 
  mutate(
    rowname = rowname %>% 
      fct_reorder(mpg)
  )


p1 <- mtcars %>% 
  ggplot(
    aes(mpg, rowname)
  ) +
  geom_point() +
  theme(
    axis.text.y = element_text(
      face = c("plain", "bold") %>% 
        rep(c(30, 2))
      )
    )

p1

退货

plain and bold labels

但是如果我添加刻面,这种简单粗体的 y 轴标签模式就会丢失
p1 + 
  facet_grid(
    cyl ~ .,
    scales = "free_y",
    space = "free_y"
    ) 

no plain and bold labels

怎么在facet_grid的情况下给一些标签加气?

最佳答案

这是一种解决方法,但在您的情况下实现它应该没有问题。我玩弄了一下,并在数据集中创建了一个实际的 fontface 变量并使用数字而不是 c("plain", "bold") 获得了更好的运气。 .

library(tidyverse)
library(magrittr)

data("mtcars")

mtcars  %<>% 
  rownames_to_column %>% 
  mutate(
    rowname = rowname %>% 
      fct_reorder(mpg)
  )

mtcars$font_face <- rep(c(1,2,3,4))

p1 <- mtcars %>% 
  ggplot(aes(mpg, rowname)) +
  geom_point() + 
  theme(axis.text.y = element_text(face = mtcars$font_face)) +
  facet_grid(cyl ~ .,
             scales = "free_y",
             space = "free_y")


p1

enter image description here

可以看到,四个面的位置分别是italic=1、bold=2、plain=3、bold.italic=4。

因此,要重新创建您所展示的示例,您只需要在原始数据管道中生成一个变量并使用任何相关方法对其进行分配。要明确地重新创建您的示例,我将使用以下代码,但我假设您需要制定一个实际适合您的用例的 dplyr 解决方案。
mtcars$font_face <- ifelse(mtcars$rowname %in% c("Toyota Corolla", "Fiat 128"), 2, 3)

编辑:

最终的解决方案目前不起作用(ifelse 行)。它识别 else值和选择 1:4成功更改了应用于标签的效果,但它没有选择更改 if 的标签值,尽管事实是 mtcars$font_face变量确实采用这些值。

我现在被卡住了,因为我不明白为什么它以前为我运行,但不是在新的 session 中运行。我仍在努力弄清楚自己,但也许我的开始可以帮助某人进入下一步。

关于r - 以编程方式在 ggplot 中使用 facets 设置轴面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394453/

相关文章:

r - 在 mutate 中添加变量标签

R: is.nloptr(ret) 中的错误:x0 中的目标返回 NA

r - 将变量值转换为列名; tidyr::spread 中的 "duplicate identifiers for rows"

r - 使用ts()对象对每周数据进行R时间序列建模

r - 在 R 中生成 3D 曲面图

r - dplyr::pull 与 purrr::pluck 和 magrittr::extract2 有何区别?

删除 data.frame 中包含其他列的行

r - 在 R 中操作子矩阵

r - ggTimeSeries 手动连续颜色

r - 具有 geom_smooth 的对数 y