如何使R中的可变宽度直方图的标签与箱子边缘对齐?

如何使R中的可变宽度直方图的标签与箱子边缘对齐?,r,ggplot2,R,Ggplot2,我使用的是ggplot2,默认情况下,它创建具有固定仓位宽度的直方图,其仓位标签绘制在每个仓位的中心 我想要的是一个可变宽度的直方图,其箱子标签代表每个箱子的端点,如下图所示: 为了生成此示例图,我手动输入了箱参数,并移动箱以使其与端点对齐: income=data.frame(lx=c(0,10,25,50,100),rx=c(10,25,50,100,150),y=c(20,28,27,18,7)) income$width = income$rx-income$lx ggplot(i

我使用的是
ggplot2
,默认情况下,它创建具有固定仓位宽度的直方图,其仓位标签绘制在每个仓位的中心

我想要的是一个可变宽度的直方图,其箱子标签代表每个箱子的端点,如下图所示:

为了生成此示例图,我手动输入了箱参数,并移动箱以使其与端点对齐:

income=data.frame(lx=c(0,10,25,50,100),rx=c(10,25,50,100,150),y=c(20,28,27,18,7))
income$width = income$rx-income$lx


ggplot(income, aes(lx+width/2,y/width)) + geom_bar(aes(width=rx-lx), color='black', stat='identity') + 
  scale_x_continuous(breaks=unique(c(income$lx,income$rx))) + labs(x='Income (thousands of $)', y='% per thousand $')

但我想从原始数据中自动完成这项工作。(原始数据可使用以下代码进行近似计算):


通过在
geom_直方图
中指定所需的
中断
,可以生成可变宽度直方图。使用
y=..density..
(而不是基于计数的默认值),以便将条形规格化为其在总条形面积中的比例

breaks = c(0,10,25,50,100,150)

ggplot(incomes, aes(incomes)) +
  geom_histogram(aes(y=..density..),
                 color="black", fill="grey40", breaks=breaks) +
  scale_x_continuous(breaks=breaks)

你说的是10、25、50等标签?但是当我在R中运行这段代码时,结果看起来与您想要的柱状图相同?您能详细说明您想要的解决方案吗?您所给出的代码在不修改的情况下创建了所需的效果。我希望使用原始数据自动执行此操作(请参见“收入”数据框)。我的例子是箱子的手工编码表示。
breaks = c(0,10,25,50,100,150)

ggplot(incomes, aes(incomes)) +
  geom_histogram(aes(y=..density..),
                 color="black", fill="grey40", breaks=breaks) +
  scale_x_continuous(breaks=breaks)