R ggplot2背对背直方图
我有一些数据如下所示:R ggplot2背对背直方图,r,ggplot2,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 。。。等等 我在R中使用ggplot2,并希望制作一个背对背的直方图。我可以使用+scale\u y\u reverse()分别制作这两个。。。。但这不是我需要的 我需要做一个背对背的图表,这样所有的“向下”值都在负y轴上,而向上的值在正y轴上。x轴是“值”列,y轴是该范围内向上或向下的计数 有
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
。。。等等
我在R中使用ggplot2,并希望制作一个背对背的直方图。我可以使用+scale\u y\u reverse()
分别制作这两个。。。。但这不是我需要的
我需要做一个背对背的图表,这样所有的“向下”值都在负y轴上,而向上的值在正y轴上。x轴是“值”列,y轴是该范围内向上或向下的计数
有人能帮忙吗?这样向下的值将按负方向计数
感谢您的帮助。
谢谢。我认为最简单的方法是自己计算垃圾箱,然后将这些垃圾箱的符号颠倒过来 首先,一些样本数据足够大,足以证明其效果:
testData <-
data.frame(
value = rnorm(1000, 10, 2)
, direction = sample(c("UP","DOWN")
, 1000
, TRUE)
)
然后,将data.frame传递给ggplot
,您应该会得到您想要的。(注意,这是使用开发版本的ggplot2
,如果您使用的是稳定版本,则可能需要使用geom\u bar(stat=“identity”)
而不是geom\u col
)
显然,根据你的兴趣清理标签和颜色
最后,根据您的用例,您可能想考虑这种“背对背”方法是否真的是您想要的。这使得比较条形图的高度非常困难。是否将所有向下的值转换为负值
data$value此问题有任何更新,或者下面的答案中缺少一个部分?很抱歉,回复太晚。我能够在创建我想要复制的示例图的分析师的帮助下创建一个代码。基本上,我在excel中创建了3列—一列包含所有值,一列包含向上值,另一列包含向下值。在此基础上,我创建了包含所有值的列、向上直方图和向下直方图,向下计数为(-DOWN.hist$counts),向上计数为(UP.hist$counts)。然后使用plot函数非常有效地组合两个图形。如果有人感兴趣并想查看代码,请告诉我。这是一个长期的反复试验过程。谢谢大家的帮助-克莱尔G.很抱歉,回复晚了。我能够在创建我想要复制的示例图的分析师的帮助下创建一个代码。基本上,我在excel中创建了3列—一列包含所有值,一列包含向上值,另一列包含向下值。在此基础上,我创建了包含所有值的列、向上直方图和向下直方图,向下计数为(-DOWN.hist$counts),向上计数为(UP.hist$counts)。然后使用plot函数非常有效地组合两个图形。如果有人感兴趣并想查看代码,请告诉我。这是一个长期的反复试验过程。谢谢大家的帮助-克莱尔G.我发布的答案有什么不适合你的地方吗?我只是想知道这是怎么回事。不,你的答案没有问题。这是彻底的,理解起来很有帮助。我确实试过使用ggplot,并记住了您的答案,但发现hist和plot更简单。如果我在不久的将来有更多的时间,我计划再次尝试ggplot。谢谢你的回答!您是否可以垂直移动两个图(即,如何在两个图之间添加垂直空间),以生成本文()中的图1?
toPlot <-
testData %>%
mutate(bin = cut(value, pretty(value, 20))) %$%
table(bin, direction) %>%
as.data.frame() %>%
mutate(plotVal = ifelse(direction == "DOWN"
, -1*Freq
, Freq))
toPlot %>%
ggplot(aes(x = bin
, y = plotVal
, fill = direction)) +
geom_col()