簡體   English   中英

刪除R中ggplot2中的單個x軸刻度線?

[英]Remove a single x-axis tick mark in ggplot2 in R?

我在ggplot2中制作條形圖,出於演示原因,我需要在我的一些條形圖之間留出空格。 我在scale_x_discrete使用限制來插入空條,這給了我需要的間距。

我的模擬數據中組bc之間的差距看起來很完美,但是ab之間的間隙仍然有黑色刻度線和背景中的白線。 我不需要任何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())

如何刪除ab之間的黑色刻度?

如果我需要改變我在條形之間插入空格的方式,我該如何做並保持圖形結構?

圖像顯示白色x軸線和黑色刻度線

可以通過黑客攻擊你所要求的:如果用第一個值"a"替換空白limits ,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"))

黑客劇情

但是,分離變量的正確方法是通過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

你可以傳遞給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')

刻面情節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM