【问题标题】:Barplot of groups based on counts基于计数的组条形图
【发布时间】:2019-04-08 15:40:28
【问题描述】:

我正在尝试制作条形图

数据在数据框中。在这些数据框中,我有几列,一列名为 ID,另一列计数。

首先,我试图对这个计数进行分组。在条形图中我们应该看到,count=0,count=1,count=2,count>=3

一些示例数据

data1 <- data.frame(ID="ID_1", count=(rep(seq(0,10,by=1),each=4)))
data2 <- data.frame(ID="ID_2", count=(rep(seq(0,10,by=1),each=4)))
data3 <- data.frame(ID="ID_3", count=(rep(seq(0,10,by=1),each=4)))

很明显,数据框的条形图看起来是一样的

我试图在 ggplot 中做这个(一点都不好)

ggplot(data1)+
geom_bar(aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data2,aes(x = ID, fill = count),position = "fill")+
geom_bar(data=data3,aes(x = ID, fill = count),position = "fill")

我得到了类似的东西 我想要做的是在条形图中有不同的组,比如计数的比例为 0,计数的比例为 1,2,计数的比例大于(等于)到 3。

我期待这样的事情

当然,在我的示例中,条形图看起来是一样的。 另外,如果您有一些建议将 Y 轴从 1.00 更改为 100%。

我的另一个问题是我的真实数据帧的长度不相等,但这没关系,因为我试图获得计数组的百分比

【问题讨论】:

    标签: r ggplot2 bar-chart


    【解决方案1】:

    您需要将所有数据以 long 格式放入 1 个数据帧中。然后将你的计数转换为因子,它就起作用了。

    ggplot(bind_rows(data1, data2, data3)) +
    geom_bar(aes(x = ID, fill = as.factor(count)), position = "fill") +
    scale_y_continuous(labels=scales::percent)   # To get the Y axis in percentage
    

    【讨论】:

    • 要获得 y 中的百分比,请在结果图中添加`+ scale_y_continuous(labels = scales::percent)`。
    • 谢谢你实际上它适用于示例数据。但我只是注意到我的真实数据有问题。数据帧的长度不相等。有什么办法解决这个问题吗?
    • @Nono_sad df 有相同的吗?它们不需要具有相同的行数
    • @RuiBarradas 是的,它们有相同的列
    • @Nono_sad 然后尝试答案中的代码,它似乎不依赖于具有相等行数的df。
    【解决方案2】:

    所以我做了一些尝试来创建我的条形图

    data1$var="first"
    data2$var="second"
    data3$var="third"
    data4$var="fourth"
    data5$var="fifth"
    
    full_data=rbind(data1,data2,data3,data4,data5)
    
    ggplot(ppgk) +
    geom_bar(aes(x = var, fill = as.factor(Count)), position = "fill")+
    scale_y_continuous(labels=scales::percent)
    

    所以我得到了类似的东西:

    如果有人有办法进行不同的计数组:count=0,count=1,count=2,count>=3

    【讨论】:

    • 这是另一个问题。您应该打开一个新帖子来提出您的问题,如果它解决了您的第一个问题,请接受此帖子的答案。
    • 这就是说,答案是创建一个新列count_grouped,如果count &lt; 3,则count_grouped = count,如果count &gt;= 3,则count_grouped = 3。然后,您可以使用count_grouped 作为美学而不是count
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 2016-02-06
    • 2021-09-07
    • 2020-03-04
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多