使用ggplot2制作带有正标签的双向条形图

5

我想在ggplot中创建一个双向条形图,其中轴标签和数据标签都在轴上方和下方为正。例如,如果您的数据是:

myData <- data.frame(category = c("yes", "yes", "no", "no"), month = c('Jan', 'Feb', 'Jan', 'Feb'), values = c(6, 5, 4, 3))

我希望有两列,一列是1月份的,另一列是2月份的。在这两列中,“是”值应该出现在向上的柱形图中,并带有正向轴和数据标签。“否”值则应该出现在向下的柱形图中,并带有正向轴和数据标签。它们之间应该有一个'0'值的柱形图。在ggplots中是否可以实现?如果可以,如何完成?谢谢。

1个回答

5
您是否正在寻找类似这样的内容?我们可以将“否定”作为负数传递,但是让ggplot将它们显示为正值。标签也是同样的道理。
myData$values2 <- ifelse(myData$category == "no", -1 * myData$values, myData$values)

library(ggplot2)
ggplot(data = myData) + geom_bar(aes(x=month,y=values2,fill=category),stat="identity",position="identity") +
                        geom_text(aes(x=month,y=values2,label=abs(values2)),vjust = ifelse(myData$values2 >= 0, 0, 1)) +
                        scale_y_continuous(labels=abs)

enter image description here


这正是我正在寻找的,非常感谢。 - Tom.Rampley
作为后续,我可以同时使 Y 轴成为绝对值并格式化为美元吗? - Tom.Rampley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接