当我在ggplot2中绘制条形图时,我想将条形底部和x轴之间的空间减小到0,同时保持条形图和绘图框上方的空间.我有一个黑客在下面这样做.它很脏,我想再次清洁.有没有办法在没有肮脏的小黑客的情况下实现这种行为?
默认(上面所需的空格但不希望空格下方的空格):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar()
Run Code Online (Sandbox Code Playgroud)

使用展开(上面不需要的0空格但是在条形下面有0个空格):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0))
Run Code Online (Sandbox Code Playgroud)

肮脏的黑客(我喜欢它,但它......好吧,脏):
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0)) +
geom_text(aes(x=1, y=10.3, label="Stretch it"), vjust=-1)
Run Code Online (Sandbox Code Playgroud)

use*_*1_G 38
我可能会错过你真正想要的东西,但是如果不使用geom_text黑客,你仍然可以设置限制
ggplot(mtcars, aes(x = as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0, 0), limits = c(0, 10.3))
# marginally cleaner
Run Code Online (Sandbox Code Playgroud)
sam*_*sam 21
R 文档包括一个新的便利函数expansion,该expand函数在ggplot2 v3.3.0 版本中expand_scale()已被弃用,该函数调用该参数。
ggplot(mtcars) +
geom_bar(aes(x = factor(carb))) +
scale_y_continuous(expand = expansion(mult = c(0, .1)))
Run Code Online (Sandbox Code Playgroud)
bap*_*ste 19
您可以手动扩展限制,例如使用expand_limits(y=10.1),或使用此技巧添加带有放大数据的不可见层,
ggplot(mtcars, aes(x=as.factor(carb))) +
geom_bar() +
scale_y_continuous(expand = c(0,0)) +
geom_blank(aes(y=1.1*..count..), stat="bin")
Run Code Online (Sandbox Code Playgroud)
因为你似乎对某些硬编码感到满意......
ggplot(mtcars, aes(x = as.factor(carb))) +
geom_bar() +
coord_cartesian(ylim = c(0, 10.3))
Run Code Online (Sandbox Code Playgroud)
从ggplot2 3.0.0开始,有一个expand_scale()函数可以与expand参数一起使用来实现此目的。您分别定义顶部和底部扩展。
ggplot(mtcars, aes(x=factor(carb))) +
geom_bar() +
scale_y_continuous(expand = expand_scale(mult = c(0, .1)))
Run Code Online (Sandbox Code Playgroud)