尝试从facet_grid中删除一个标签,但它显示在 NA 上。我怎样才能一起摆脱这个标签?

Trying to remove one label from facet_grid, but it shows up at NA. How can I get rid of this label all together?

提问人:Crunchysoups 提问时间:10/28/2023 最后编辑:TillCrunchysoups 更新时间:10/28/2023 访问量:37

问:

我正在尝试生成一个带有facet_grid的条形图,以显示我的主要分类变量(“行踪”),我的子类别(“事物”)绘制在条形图上。但是,我想完全删除“死”的标签,因为它是多余的,而且有点分散注意力。有谁知道我能做到这一点?

顺便说一句,我还注意到fat_relevel似乎没有在这里合作。那里有什么见解吗?

这是我显示问题的初始代码和图形:

SpookyReport2 <-  HalloweenData %>% mutate(Whereabouts = fct_relevel(Whereabouts, c("Dead", "Halfdead", "Alive"))) %>% 
  ggplot(HalloweenData, mapping = aes(x=Thingies, y=TotalSpook, fill= Thingies)) +
  geom_bar(stat='summary') +
  geom_beeswarm(aes(x = Thingies, y = TotalSpook), dodge.width = 0.9, alpha = 0.5)+
  geom_errorbar(data = SpookySumReport2, aes(x = Thingies, y = mean.cm, ymin=mean.cm-SE.cm,ymax=mean.cm+SE.cm, colour=Thingies),
                color = 'black', width = 0.2, position = position_dodge(width = 0.9)) +
  scale_fill_manual(values=SpookyPalette) +
  facet_grid(~ Whereabouts, 
             scales = "free_x",
             space = "free_x",
             switch = "x")+
  theme(panel.spacing = unit(0, units = "cm"), 
        strip.placement = "outside", 
        strip.background = element_rect(fill = "white")) + 
  theme(legend.position="none") +
  labs(y="Total spook (spook-o-meters)", x=NULL) + ggtitle("Effect of losing my mind over this") +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(axis.line = element_line(colour = "black"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.background = element_blank()) +
  theme(text = element_text(size = 15)) 
SpookyReport2

Bad graph

因此,我在这个网站上到处寻找建议,并决定走贴标机路线。我以为这会让我去掉“死”的标签,但它却在它的位置上产生了一个更烦人的“NA”。

where.labs <- c("Dead", "Halfdead", "Alive")
names(where.labs) <- c("", "Halfdead" , "Alive")


SpookyReport2 <-  HalloweenData %>% mutate(Whereabouts = fct_relevel(Whereabouts, c("Dead", "Halfdead", "Alive"))) %>% 
  ggplot(HalloweenData, mapping = aes(x=Thingies, y=TotalSpook, fill= Thingies)) +
  geom_bar(stat='summary') +
  geom_beeswarm(aes(x = Thingies, y = TotalSpook), dodge.width = 0.9, alpha = 0.5)+
  geom_errorbar(data = SpookySumReport2, aes(x = Thingies, y = mean.cm, ymin=mean.cm-SE.cm,ymax=mean.cm+SE.cm, colour=Thingies),
                color = 'black', width = 0.2, position = position_dodge(width = 0.9)) +
  scale_fill_manual(values=SpookyPalette) +
  facet_grid(~ Whereabouts, 
             scales = "free_x",
             space = "free_x",
             switch = "x",
labeller = labeller(Whereabouts = where.labs))+
  theme(panel.spacing = unit(0, units = "cm"), 
        strip.placement = "outside", 
        strip.background = element_rect(fill = "white")) + 
  theme(legend.position="none") +
  labs(y="Total spook (spook-o-meters)", x=NULL) + ggtitle("Effect of losing my mind over this") +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(axis.line = element_line(colour = "black"),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        panel.border = element_blank(),
        panel.background = element_blank()) +
  theme(text = element_text(size = 15)) 
SpookyReport2

Annoying NA on x-axis

有人对这个问题有解决方案吗?先谢谢你!

r ggplot2 分面网格

评论

0赞 IRTFM 10/28/2023
使用 “” 而不是 NA。
0赞 Crunchysoups 10/28/2023
我相信这就是我在上面的例子中尝试过的——这就是我最终得到 NA 的方式。
0赞 IRTFM 10/28/2023
将 Thingies 的级别向量从 “Dead” 更改为 “”。如果你发布了该变量的输出,我相信有人可以给你代码,尽管它可能已经被问过和回答了数十次。levels()

答:

0赞 Till 10/28/2023 #1

您可以创建其中“Dead”的替代版本 替换为空字符串。Whereabouts""

这里有一个最小的例子来演示这个想法

library(tidyverse)

df <- tibble(
  a = sample(letters, 200, replace = TRUE),
  b = sample(LETTERS[1:5], 200, replace = TRUE)
)

df <-
  df |>
  mutate(b2 = ifelse(b == "C", "", b))

ggplot(df, aes(a)) +
  geom_bar() +
  facet_grid( ~ b2)

用于进行更改的数据代码如下所示:

HalloweenData <- 
  HalloweenData |> 
  mutate(Whereabouts2 = ifelse(Whereabouts == "Dead", "", Whereabouts))

评论

0赞 Crunchysoups 10/28/2023
谢谢你的例子!不幸的是,我有点代码愚蠢。你能提供这个例子,但在我的数据中使用变量吗?例如,这是你的意思吗?但是,我不确定在您的示例中哪些变量会替换 b 和 C。HalloweenData <- HalloweenData |> mutate(Whereabouts = ifelse(b == “C”, “”, b))
0赞 Till 10/28/2023
我添加了一个应该适用于您的环境的示例。