【问题标题】:Realigning x-axis on geom_histogram in ggplot2在 ggplot2 中重新对齐 geom_histogram 上的 x 轴
【发布时间】:2018-03-29 04:43:47
【问题描述】:

ggplot 中创建geom_histogram 时,bin 标签直接显示在条形下方。我怎样才能使它们出现在 bin 的任一侧,以便它们描述每个 bin 的范围(以便包含从 0 到 10 的案例的 bin 将出现在 0 到 10 个标签之间)?

我尝试过使用

geom_histogram(position=position_nudge(5))

但是,我使用的直方图是堆叠的(以区分每个 bin 中的类别),当我添加这个位置时,这种效果就被破坏了。还有另一种方法吗?也许移动轴标签本身而不是条形?

可重现的代码:

dd<-data.frame(nums=c(1:20,15:30,40:55),cats=c(rep("a",20),rep("b",30),rep("c",2)))
ggplot(dd, aes(nums))+geom_histogram(aes(nums,fill=cats),dd,binwidth = 10)

结果:

我希望条形图向右移动 5,以便 0 与直方图的左侧对齐

【问题讨论】:

  • 如果您创建一个可重现的问题并显示您想要的情节(即使使用 Paint),对读者来说会更容易。
  • @Tung 编辑了我的问题

标签: r ggplot2 histogram


【解决方案1】:

您可以尝试定义中断和标签

n <- 10
ggplot(dd, aes(nums, fill=cats)) +
  geom_histogram(binwidth = n, boundary = 0) + 
  scale_x_continuous(breaks = seq(0,55,n), labels = seq(0,55, n))

【讨论】:

  • 唯一的问题是事先不知道最大值。我想我可以轻松解决这个问题......
  • 尝试将55 替换为某事。喜欢max(dd$nums)
【解决方案2】:

以下移动轴的标签。我不确定如何移动 x 轴上的刻度,所以我删除了它们。

ggplot(dd, aes(nums))+geom_histogram(aes(nums),dd,binwidth = 10)+
  theme(axis.text.x = element_text(hjust = 5),
        axis.ticks.x  = element_blank())

【讨论】:

  • 我认为 'hjust' 只在 0 和 1 之间
  • 刚刚试了一下,果然不出所料,结果不稳定,因为hjust不是这样工作的。
猜你喜欢
  • 1970-01-01
  • 2017-04-02
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多