如何解决在R中使用ggplot2在堆积条形图中标记问题
我一直在尝试使用以下代码创建堆积的条形图。但是我在生成情节时面临一个问题。这是问题和代码供您参考:
#required packages
require(ggplot2)
require(dplyr)
require(tidyr)
#the data frame
myData <- data.frame(
a = c(70,113),b = c(243,238),c = c(353,219),d = c(266,148),Gender = c("Male","Female"))
myData <- gather(myData,Age,Value,a:d)
myData <- group_by(myData,Gender) %>% mutate(pos = cumsum(Value) - (0.5 * Value))
# plot bars and add text
p <- ggplot(myData,aes(x = Gender,y = Value)) + geom_bar(aes(fill = Age),stat="identity") +
geom_text(aes(label = Value,y = pos),size = 4)
p
在此图中,“女性”栏没问题。但是,您可以看到“雄性”栏中的两个值分别位于同一框中的“ 70”和“ 243”,并且最上面的部分为空。四个组的编号顺序都可以。
为什么我要这个?如何纠正这个数字?
解决方法
注意数字的颜色不是正确的吗?默认设置是从上至下对条进行排序。这由变量级别的顺序控制。要更改年龄的绘制方式,请反转年龄水平
myData <- gather(myData,Age,Value,a:d)
myData <- group_by(myData,Gender) %>%
mutate(pos = cumsum(Value) - (0.5 * Value),Age=forcats::fct_rev(factor(Age)))
然后,您将获得与您计算出的cumsum
相匹配的条形顺序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。