首页 > 解决方案 > 如何更改ggplot中条形的对齐方式

问题描述

我正在尝试在 x 轴上针对频率制作长度等级的条形图。长度向下舍入,因此我希望 0cm 的条形图绘制在 0 的右侧,而不是以 0 为中心。

考虑代码:

library(ggplot2)

set.seed(0)
d <- data.frame(x=seq(0,50,5), y=runif(11))
ggplot(d, aes(x=x, y=y)) + geom_col()

产生

当前行为

我希望它类似于

ggplot(d, aes(x=x+mean(diff(x)/2), y=y)) + geom_col()

理想行为

有没有办法通过改变position参数geom_col而不是直接操作数据来做到这一点?

标签: rggplot2

解决方案


更新

即使数据发生变化也应该有效的解决方法:

图书馆(ggplot2)

d <- data.frame(x= seq(0,50,round(runif(1)*10)))
d$y = runif(nrow(d))
ggplot(d, aes(x=x, y=y)) + 
    geom_col(width = min(diff(sort(d$x)))*0.9, 
            position = position_nudge(x = min(diff(sort(d$x)))*0.9/2))

原始答案 希望这会有所帮助:

library(ggplot2)
set.seed(0)
d <- data.frame(x=seq(0,50,5), y=runif(11))
ggplot(d, aes(x=x, y=y)) + 
geom_col(position = position_nudge(x = 2))

推荐阅读