r - geom_text 更改小平面图的因子顺序

标签 r ggplot2 tidyverse

我正在尝试注释分面图的各个图。我使用因子水平将顺序设置为 2008 年、1999 年。 但是当我将 geom_text 添加到 ggplot 时,绘图的顺序发生了变化。请参阅下面的示例。我究竟做错了什么?我该如何解决这个问题?

library(tidyverse)

df <- mpg %>% mutate(year = factor(year, levels = c(2008,1999)))

anno <- data.frame(xstar = c(5, 2), ystar = c(100, 70),
                   lab = c("text1","text2"),
                   year = c("2008","1999"))

df %>%  ggplot(aes(class, displ)) +
  geom_col(aes(fill=drv)) +
  facet_grid(~year) + 
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) +
  geom_text(data = anno, aes(x = xstar,  y = ystar, label = lab))

enter image description here

最佳答案

将注释数据框中的year列也转换为与主df具有相同级别和顺序的factor:

library(ggplot2)

df <- mpg
df$year = factor(df$year, levels = c(2008, 1999))

anno <- data.frame(
  xstar = c(5, 2), ystar = c(100, 70),
  lab = c("text1", "text2"),
  year = factor(c("2008", "1999"), levels = c(2008, 1999))
)

ggplot(df, aes(class, displ)) +
  geom_col(aes(fill = drv)) +
  geom_text(data = anno, aes(x = xstar, y = ystar, label = lab)) +
  facet_grid(~year) +
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1))

关于r - geom_text 更改小平面图的因子顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71086862/

相关文章:

r - 计算每一列的唯一值

r - scale_fill_manual 在 geom_bar 中不起作用

R - (Tidyverse) 根据列整数将一行变成多行

r - 尝试在 ggplot 中的直方图上应用颜色渐变

r - ggplot2 图例与每个其他分组的轮廓

r - Pivot_wider,基于另一列进行排序

在 lapply tidy 期间即时重命名列

r - tidyverse 干扰 ggplot2 吗?无法访问map_data

r - 在mutate中使用replace_na和cross

r - sapply 与自定义函数(一系列 if 语句)