【问题标题】:Labeling Issue in the Stacked Bar Plot using ggplot2 in R在 R 中使用 ggplot2 在堆积条形图中标记问题
【发布时间】:2020-08-14 22:37:43
【问题描述】:

我一直在尝试使用以下代码创建堆积条形图。但是我在生成情节时遇到了问题。以下是问题和代码供您参考:

#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”位于同一个框中,最上面的部分是空的。四组的编号顺序还可以。

为什么我会得到这个?如何修正这个数字?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    注意到这些数字的颜色不正确吗?默认设置是从上到下排列条形。这是由变量级别的顺序控制的。要改变绘制年龄的方式,请反转年龄级别

    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 匹配的条形排序。

    【讨论】:

    • 谢谢。你是救生员。但是我有一个问题,为什么女酒吧出来了?
    • 结果不正确。我猜这还不足以引起注意。最初的女性紫色条用于类别“d”,但标有“113”,这是“a”而不是“d”的值。他们之前都是错误的。
    猜你喜欢
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    相关资源
    最近更新 更多