我创建了一个图表ggplot。
我已经设置了每个条的宽度,但我还想将条之间的间距设置为某个值(例如,我想将红色标记的间距减小到 0.1)?我知道有像 position_dodge 这样的选项,但它似乎不能与 coord_flip() 结合使用。
在这篇相关文章中,建议使用主题(aspect.ratio = .2),但这不允许额外设置条的特定宽度。
有什么建议可以实现这一目标吗?
代码:
library(ggplot2)
set.seed(0)
numbers <- runif(5, 0, 10)
names <- LETTERS[seq(1, 5)]
df <- cbind.data.frame(names, numbers)
ggplot(data = df, aes(x = names, y = numbers)) +
geom_bar(stat = "identity", fill = "blue", width = 0.30) +
coord_flip()
Run Code Online (Sandbox Code Playgroud)
我认为解决方案是结合
width的参数(geom_bar()填充为条保留的空间)aspect ratio的参数theme(),它垂直挤压图,导致出现“小”条形。使用以下代码:
library(ggplot2)
## your data
set.seed(0)
numbers <- runif(5, 0, 10)
names <- LETTERS[seq(1, 5)]
df <- cbind.data.frame(names, numbers) ## corrected args
ggplot(data = df, aes(x = names, y = numbers)) +
geom_bar(stat="identity",
fill = "blue",
width=0.9) + ### increased
theme(aspect.ratio = .2) + ### aspect ratio added
coord_flip()
Run Code Online (Sandbox Code Playgroud)
你会得到下图: