fill参数使geom_label()中的位置参数无效

时间:2018-12-19 19:42:46

标签: r ggplot2

当我在geom_label中使用填充参数时,我的位置参数无效。 geom_text()不会发生这种情况。如何在geom_label()中使用填充和位置参数?

图书馆(dplyr) 库(ggplot2)

ds_mt <- 
  mtcars %>% 
  group_by(cyl, am) %>% 
  summarise(mpg = mean(mpg)) %>% 
  ungroup() %>% 
  mutate_at(vars(cyl, am), funs(as.factor)) 

ds_mt %>% 
  ggplot(aes(x = cyl, fill = as.factor(am), y = mpg, label = am)) + 
  geom_col(position = position_dodge()) + 
  geom_label(position = position_dodge(width = .9))

# Adding fill argument to geom_label() nullifies the position argument
ds_mt %>% 
  ggplot(aes(x = cyl, fill = as.factor(am), y = mpg, label = am)) + 
  geom_col(position = position_dodge()) + 
  geom_label(fill = "white", position = position_dodge(width = .9))

ds_mt %>% 
  ggplot(aes(x = cyl, fill = as.factor(am), y = mpg, label = am)) + 
  geom_col(position = position_dodge()) + 
  geom_label(position = position_dodge(width = .9), fill = "white")

# no problems with geom_text
ds_mt %>% 
  ggplot(aes(x = cyl, fill = as.factor(am), y = mpg, label = am)) + 
  geom_col(position = position_dodge()) + 
  geom_text(position = position_dodge(width = .9), color = "blue")

1 个答案:

答案 0 :(得分:2)

您需要在geom_label()中定义一个组。

ds_mt %>% 
  ggplot(aes(x = cyl, fill = as.factor(am), y = mpg, label = am)) + 
  geom_col(position = position_dodge()) + 
  geom_label(aes(group = factor(am)), fill = "white", position = position_dodge(width = .9))

enter image description here