ggplot2背对背直方图

时间:2016-10-14 16:08:06

标签: r ggplot2

我有一些看起来像这样的数据:

self.centerNavigationController.view.frame = self.view.frame

......等等。

我在R中使用ggplot2并希望制作一个背对背的直方图。我可以使用value direction 2.2 UP 2.3 DOWN 2.4 UP 2.4 DOWN 2.5 DOWN 2.5 UP 2.5 DOWN 2.5 UP 2.6 DOWN 分别制作两个....但这不是我需要的。

我需要制作背靠背图表,以便所有" DOWN"值在负y轴上,UP值在正y轴上。 x轴是"值" column和y axis是该范围内UP或DOWN数的计数。

任何人都可以帮忙吗?因此,DOWN值以负方向计算..

感谢任何帮助。 感谢。

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是自己计算垃圾箱,然后反转这些垃圾箱。

首先,一些足以证明效果的样本数据:

testData <-
  data.frame(
    value = rnorm(1000, 10, 2)
    , direction = sample(c("UP","DOWN")
                         , 1000
                         , TRUE)
  )

然后,cut将数据放入您选择的分档中,并将值修改为其中一个组的负值。 (使用dplyrmagrittr

toPlot <-
  testData %>%
  mutate(bin = cut(value, pretty(value, 20))) %$%
  table(bin, direction) %>%
  as.data.frame() %>%
  mutate(plotVal = ifelse(direction == "DOWN"
                          , -1*Freq
                          , Freq))

然后,将该data.frame传递给ggplot,你应该得到你想要的。 (注意,这是使用ggplot2的开发版本,如果您使用稳定版本,则可能需要使用geom_bar(stat = "identity")而不是geom_col

toPlot %>%
  ggplot(aes(x = bin
             , y = plotVal
             , fill = direction)) +
  geom_col()

enter image description here

显然,根据您的兴趣清理标签和颜色。

作为最后一点,根据您的使用情况,您可能需要考虑这是否&#34;背靠背&#34;方法真的是你想要的。这使得很难比较条形的高度。