我在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
之间的黑色勾号?
如果我需要更改我在条形图之间插入空格的方式,我该如何操作并保持图形结构?
答案 0 :(得分:7)
你可以做你正在通过hack提出的问题:如果你用第一个值@import '_default-styles.scss';
@import '_client-two.scss';
替换空白limits
,ggplot会将栏放在第一个发生并将下一个留空:
"a"
然而,正确的分离变量的方法是通过facetting,这需要一个变量来定义你想要的组,例如。
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"))
你可以传递给ggplot进行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