删除R中ggplot2中的单个x轴刻度线?

MST*_*MST 6 r ggplot2

我在ggplot2中制作条形图,出于演示原因,我需要在我的一些条形图之间留出空格.我正在使用限制scale_x_discrete来插入空条,这给了我所需的间距.

群体之间的差距b,并c在我的模拟数据看起来很完美,但之间的差距a,并b仍然有黑色刻度和背景中的白线.我不需要任何x轴网格线,所以我可以很容易地解决白线的问题,但我无法弄清楚如何摆脱刻度线.

我正在使用R版本3.3.1(2016-06-21) - "你的头发中的错误",在RStudio工作,代码需要ggplot2

### Mock data with the same structure as mine
my.data <- data.frame(x = rep(c("a", "b", "c", "d"), 3),
                      y = c("e", "f", "g"))

### Make graph
ggplot(my.data, aes(x = x, fill = y)) + 
    geom_bar(position = "fill") +
    scale_x_discrete(limits = c("a", "", "b", "", "c", "d"))

### Remove white line in background by removing all x grid lines
ggplot (my.data, aes(x = x, fill = y)) +  
    geom_bar(position = "fill") +
    scale_x_discrete(limits = c("a", "", "b", "", "c", "d")) + 
    theme(panel.grid.minor.x = element_blank(),
          panel.grid.major.x = element_blank())
Run Code Online (Sandbox Code Playgroud)

如何删除a和之间的黑色刻度b

如果我需要改变我在条形之间插入空格的方式,我该如何做并保持图形结构?

图像显示白色x轴线和黑色刻度线

ali*_*ire 7

可以通过黑客攻击你所要求的:如果你limits用第一个值替换你的空白"a",ggplot会在第一次出现时放置该栏并将下一个栏留空:

my.data <-data.frame (x=rep(c("a", "b", "c", "d"),3),
                      y=c("e", "f", "g"))

ggplot(my.data, aes(x=x, fill = y)) + 
    geom_bar(position = "fill") + 
    scale_x_discrete(limits = c("a", "a", "b", "a", "c", "d"))
Run Code Online (Sandbox Code Playgroud)

黑客剧情

但是,分离变量的正确方法是通过facetting,这需要一个变量来定义所需的组,例如

library(dplyr)

            # create with your favorite grammar
my.data %>% mutate(grp = case_when(.$x == 'a' ~ 1,
                                   .$x == 'b' ~ 2,
                                   TRUE ~ 3))
#>    x y grp
#> 1  a e   1
#> 2  b f   2
#> 3  c g   3
#> 4  d e   3
#> 5  a f   1
#> 6  b g   2
#> 7  c e   3
#> 8  d f   3
#> 9  a g   1
#> 10 b e   2
#> 11 c f   3
#> 12 d g   3
Run Code Online (Sandbox Code Playgroud)

你可以传递给ggplot进行facetting:

my.data %>% mutate(grp = case_when(.$x == 'a' ~ 1,
                                   .$x == 'b' ~ 2,
                                   TRUE ~ 3)) %>%
    ggplot(aes(x, fill = y)) + 
    geom_bar(position = 'fill') + 
    facet_grid(. ~ grp, space = 'free_x', scales = 'free_x')
Run Code Online (Sandbox Code Playgroud)

刻面情节

  • 另一种"hacky"方法是将这样的东西添加到`theme`中:`axis.ticks.x = element_line(color = c("black","transparent","black","transparent","黑色","黑色"))` (2认同)