R和ggplot2-如何动态隐藏轴变量标签

时间:2019-02-07 02:59:14

标签: r ggplot2

我有一个简单的箱形图,我想动态地隐藏变量标签,以便一次只打印其中一个:

library(ggplot2)
library(dplyr)
library(magrittr)

mtcars <- as.data.frame(mtcars)
mtcars$CarName <- rownames(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)

#Only want to label 6 clyinder boxplot
mtcars <- mtcars %>% 
  mutate(Label = ifelse(cyl == 6, 
                        "6 Cylinders", NA))

ggplot(mtcars, aes(y=mpg, x = cyl)) + 
  geom_boxplot() + 
  theme(axis.text.x = element_blank())

我要实现的目标仍然是绘制3个箱形图(对于圆柱4、6和8,为1个图),但我只想显示圆柱6的标签。

在我的数据集中,“标签”列中填充了我想要标记的圆柱体,对于我不想标记的圆柱体,其值为空。该列会动态更新,因此我需要能够使用它来标记正确的箱形图。

下面是到目前为止我的箱形图。我想标记6:

Box Plot so far - want to add 6

奖金问题:如果我还可以为6缸盒子填充颜色/粗体线条,使其看起来与其余部分不同,那将很好。

1 个答案:

答案 0 :(得分:0)

您可以使用geom_textgeom_label创建标签。在这种箱线图中,按我的方式手动设置标签的y位置或将其绑定到另一个变量非常有用。我还创建了一个简单的变量来强调6个圆柱体的颜色。

library(ggplot2)
library(dplyr)
library(magrittr)

mtcars <- as.data.frame(mtcars)
mtcars$CarName <- rownames(mtcars)
mtcars$cyl <- as.factor(mtcars$cyl)

mtcars %>% 
  mutate(Label = ifelse(cyl == 6, 
                        "6 Cylinders", NA),
         fill_color = cyl == 6) %>% 
  ggplot(aes(y=mpg, x = cyl)) + 
  geom_boxplot(aes(fill = fill_color)) + geom_label(aes(label = Label, y = 10)) +
  guides(fill = F)