[英]Remove a single x-axis tick mark in ggplot2 in R?
我在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())
如何刪除a
和b
之間的黑色刻度?
如果我需要改變我在條形之間插入空格的方式,我該如何做並保持圖形結構?
你可以通過黑客攻擊你所要求的:如果用第一個值"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.