【问题标题】:带有面板数据的条形图
【发布时间】:2022-01-21 13:02:06
【问题描述】:

我正在努力安静地制作一个条形图,向我展示voted 的每个类别中有多少观察值

事情是这样的。我的面板数据框中有一个“投票”变量,数字告诉我,在 2012 年和 2014 年投票给了哪一方。

这是一个可重现的例子

id <- c('1','1','1','2','2','2','3','3','3')
wave <- c(2012, 2013, 2014, 2012, 2013, 2014, 2012, 2013, 2014)
voted <- c(1, NA, 4, 1, NA, 2, 2, NA, 4)
mydata <- data.frame(id, wave, voted)

仅在 2012 年和 2014 年举行了选举,因此也举行了 NA。每个数字代表党的名称。

我想在条形图中显示有多少受访者投票支持第 1、2、4 党...

我尝试了以下方法:

ggplot(mydata, aes(x = as.factor(voted), y = year, fill = year)) +
  geom_bar(stat = "identity", position = "dodge")

但正如你所见,它看起来真的很奇怪。

ggplot

我对这样的事情更感兴趣:

How it should look

有人有什么建议吗?提前致谢!

【问题讨论】:

  • 在条形图中,y 值是我认为在您的请求中“投票”的条形高度,x 值是类别,可能是“id”,子类别可能是“年”。我不认为你想让 y 值成为一个因素。此外,“年份”不是列名,您在 ggplot 调用中缺少括号。 (您应该已经得到该代码并出错。

标签: r ggplot2 bar-chart panel-data


【解决方案1】:

你在寻找这样的东西吗?

library(dplyr)
library(ggplot2)

mydata %>% 
  group_by(wave) %>% 
  count(voted) %>% 
  ggplot(aes(x=factor(voted), n, fill=factor(wave)))+
  geom_col(position = position_dodge())

【讨论】:

  • 是的,这正是我要找的。但是,我需要删除一个因子级别 - 例如数字 4。是否可以过滤因子(投票)变量中的每个级别?提前致谢!
【解决方案2】:

这是应用我在上述评论中确定的问题的说明:

在条形图中,y 值是我认为在您的请求中“投票”的条形高度,x 值是类别,可能是“id”,子类别可能是“年”。我不认为你想让 y 值成为一个因素。此外,“年份”不是列名,您在 ggplot 调用中缺少括号。 (你应该已经得到了那个代码并出错了。-

ggplot(mydata, aes(x = id, y = voted, fill = factor(wave))) +
    geom_bar(stat = "identity", position = "dodge")
#Warning message:
#Removed 3 rows containing missing values (geom_bar). 

【讨论】:

    猜你喜欢
    • 2017-12-05
    • 2021-10-30
    • 2016-07-13
    • 1970-01-01
    • 2016-02-12
    • 2015-01-16
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多