首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带有3个变量的R条形图

带有3个变量的R条形图
EN

Stack Overflow用户
提问于 2017-03-24 16:57:41
回答 2查看 14.7K关注 0票数 3

我有一个有多个变量的数据帧,我想知道如何像Excel中的plotting选项那样绘制它们。

下面是一个简单的数据示例:

代码语言:javascript
复制
  > V1   V2  V3
    1    A    0
    1    A    0
    1    B    1
    1    B    0
    1    A    1
    2    A    0
    2    B    0
    2    A    0
    2    A    0
    2    A    0

我想要的是一个带有V1x轴,当V2AB时,一个包含所有V3计数的y轴。

有人能分享一些关于如何做到这一点的想法吗?因为它只能与2*2表一起使用,所以barplot函数似乎不起作用?

谢谢。

编辑:

这个图不是由给定的数据生成的:

y轴视为V3的百分比,将x轴视为V1,并为每个级别的V2创建条形图。

EN

Stack Overflow用户

发布于 2017-03-24 18:23:07

首先,您需要获取一个包含要绘制的值的摘要dataframe

代码语言:javascript
复制
df <- data.frame(V1 = rep(1:2,each=5), V2 = c("A","A","B", "B", "A", "A", "B","A", "A", "A"), 
                 V3 = c(0,0,1,0,1,0,0,0,0,0))

values <- aggregate(df$V3, list(V1 = df$V1, V2 = df$V2), sum)

#    V1 V2 V3
# 1  1  A  1
# 2  2  A  0
# 3  1  B  1
# 4  2  B  0

ggplot(values, aes(x = factor(V1), y = V3, fill = V2))+
                geom_bar(stat = "identity", width = 0.2)

或者,如果你不想让它们堆叠在一起的话。添加一些标签。

代码语言:javascript
复制
ggplot(values, aes(x = factor(V1), y = V3, fill = V2))+
                geom_bar(stat = "identity", width = 0.2, position = "dodge") +
                labs(list(x = "x", y = "count",fill = "group"))

编辑

我试着在dataframe上直接使用ggplot,不做摘要,结果是一样的。

代码语言:javascript
复制
## a little change in V3
df <- data.frame(V1 = rep(1:2,each=5), 
                 V2 = c("A","A","B", "B", "A", "A", "B","A", "A", "A"), 
                 V3 = c(2,0,1,2,1,3,3,8,1,0))
## plot df directly
ggplot(df, aes(factor(V1), V3, fill = V2)) + 
        geom_bar(stat = "identity", width = 0.2, position = "dodge") +
        labs(list(x = "x", y = "count",fill = "group"))

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42995155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档