我们在使用ggplot2绘制柱状图时,经常会遇到两个柱子之间距离过宽,通过调整柱子宽度去调整间距时又会失去美感,像下面这样
data
# A tibble: 5 x 2
lable number
<chr> <dbl>
1 a 5
2 b 6
3 c 4
4 d 8
5 e 10
ggplot(data,aes(lable, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)#图一
ggplot(data,aes(lable, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.3)#图二
图一
图二
那么如何在不改变柱子宽度的情况下调整柱子之间的间距呢?其实可以将横坐标转换成连续的变量,这样就可以通过调整变量的大小改变柱子的间距,示例如下
data
# A tibble: 5 x 3
lable X number
<chr> <dbl> <dbl>
1 a 0.2 5
2 b 0.3 6
3 c 0.4 4
4 d 0.5 8
5 e 0.6 10
# 图三
ggplot(data,aes(X, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)+ #设定柱子宽度
scale_x_continuous(limits=c(0.1,0.7),breaks=c(0.2,0.3,0.4,0.5,0.6), labels = c('a','b','c','d','e'))#设置x轴的范围,将x轴的刻度替换成相应的标签
#图四
ggplot(data,aes(X, number, fill='#E29969'))+
geom_bar(stat="identity",position="dodge",width = 0.05)+#设定柱子宽度
scale_x_continuous(limits=c(0.1,1.1),breaks=c(0.2,0.3,0.4,0.5,0.6), labels = c('a','b','c','d','e'))#设置x轴的范围,将x轴的刻度替换成相应的标签
可以调整X轴的范围来调整柱子的距离
图三
图四