并排条形图,其中各列按组比例(相对频率条形图)

2024-03-15

数据集

gender <- c('Male', 'Male', 'Male', 'Female', 'Female', 'Female', 'Male', 'Male', 'Male', 'Female', 'Female', 'Female', 'Female', 'Female', 'Male', 'Female', 'Female', 'Male', 'Female', 'Female')
answer <- c('Yes', 'No', 'Yes', 'Yes', 'No', 'No', 'No', 'No', 'No', 'No', 'No', 'Yes', 'No', 'No', 'Yes', 'Yes', 'Yes', 'Yes', 'No', 'Yes')
df <- data.frame(gender, answer)

对女性有偏见:

df %>% ggplot(aes(gender, fill = gender)) + geom_bar()

我的任务是构建一个图表,以便轻松找出两种性别中哪一种更有可能说'Yes'.

但是,考虑到偏见,我不能只是这样做

df %>% ggplot(aes(x = answer, fill = gender)) + geom_bar(position = 'dodge')

or even

df %>% ggplot(aes(x = answer, y = ..count../sum(..count..), fill = gender)) +
geom_bar(position = 'dodge')

为了减轻偏差,我需要将每个计数分别除以男性或女性总数,以便'Female'条形总计为1以及'Male'那些。就像这样:

df.total <- df %>% count(gender)
male.total <- (df.total %>% filter(gender == 'Male'))$n
female.total <- (df.total %>% filter(gender == 'Female'))$n

df %>% count(answer, gender) %>% 
mutate(freq = n/if_else(gender == 'Male', male.total, female.total)) %>% 
ggplot(aes(x = answer, y = freq, fill = gender)) + 
geom_bar(stat="identity", position = 'dodge')

这描绘了一幅完全不同的画面。

问题:

  1. 有没有一种方法可以仅使用来简化前一段代码dplyr and ggplot2?
  2. 还有其他库可以做得更好吗?
  3. 上述类型的图表有约定的名称吗?

Thanks.


问题一:

df %>%  
  count(gender, answer) %>% 
  group_by(gender) %>% 
  mutate(freq = n/sum(n)) %>% 
  ggplot(aes(x = answer, y = freq, fill = gender)) + 
  geom_bar(stat="identity", position = 'dodge')

问题2:

您可能可以使用其他包以更少的行数完成此操作。

问题3:

相对频率条形图。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

并排条形图,其中各列按组比例(相对频率条形图) 的相关文章

随机推荐

  • Linq 基于两列进行区分

    我有一个要求 我需要在两列中获取具有相同组合的唯一记录 我的数据将类似于 CA A 列 和 CB B 列 以及一些数据 CA CB 1 2 1 2 3 4 5 6 2 1 1 6 1 6 5 1 比方说 我需要获取有价值的记录1两列中的内容
  • 使用带有值列表的列来指定从哪些列创建另一个值列表

    我有数据如下 以前的解决方案 library dplyr dat in lt structure list rn c Type A Type B 0 25 c 5L 0L 25 50 c 0L 0L 25 100 c 38L 3L 50 1
  • Node 未找到 html 中包含的 js 文件

    我正在尝试使用 node 和 socket io 构建一个简单的聊天应用程序 我正在遵循此处列出的教程 http socket io get started chat http socket io get started chat 我的问题
  • 如何从Jira REST API获取一段时间内的所有工作日志?

    我正在使用 PHP 和 Jira REST API 编写一个应用程序 该应用程序需要生成特定时间段的报告 其中包含一个人在特定项目上花费的时间的累积 为此 我需要打一个电话 给出类似的信息 e g For the period 01 01
  • 如何从 doPost 函数获取变量传递给 Html 模板

    大家好 我正在使用 Google 脚本中的 doPost 函数创建电子邮件 OTP 模板 实际上 我有一个应用程序 当用户请求 OTP 时 他的详细信息 如姓名 电子邮件和应用程序生成的 OTP 将发送到此脚本 然后它将电子邮件发送给用户
  • 如何让 typedef 类型从类型类的母类型继承运算符

    发布答案后续问题 Brian 提供了答案 并建议使用提升和转移的解决方案 然而 我找不到足够的关于举重和转移的教程信息 无法知道如何调整他的答案来完成我需要做的事情 在这里 我在黑暗中工作 并使用给出的答案作为即插即用模板来提出这个后续问题
  • C++ 函数参数中的指针与引用 [重复]

    这个问题在这里已经有答案了 我想知道如何让一个函数改变两个变量 返回值和另一个变量 我偶然发现在参数 我理解是指参数的地址 之前使用 调用该函数 然后在整个函数中 用 符号引用它 我猜这是 取消引用 意味着它改变了地址处的对象 不管怎样 一
  • 将 HTML 高度设置为 100% 可消除滚动

    我不明白为什么这不起作用 我需要将 HTML 和正文的高度设置为 100 以设置页面内三行的高度 但是当我这样做时 它会消除滚动 特别是在移动设备上 甚至在某些浏览器窗口大小调整大小时也是如此 html body height 100 di
  • 制作一个具有响应宽度且仅 CSS 的箭头形状

    我正在尝试制作一个带有向上箭头的容器 我熟悉边框绘制技巧 https stackoverflow com questions 7073484 how does this css triangle shape work并认为这是一个可能的解决
  • PyPI 区分大小写吗?

    PyPI 如何处理区分大小写 例如 这个问题 https stackoverflow com questions 17460747 change case of package name on pypi记录 PyPI 拒绝新包foobar
  • 如何更改vmlite android的屏幕尺寸?

    我安装了这很棒 但有一件事我找不到解决方案 如何更改屏幕尺寸 它有一个固定的屏幕宽度 高度比例 但我需要改变它来模拟一些Android手机 我搜索了很多但没有找到解决方案 请帮忙 UPDATE grub菜单如下 cmdline hd0 2
  • SqlDataAdapter.Dispose 实际上是否关闭关联的 SqlConnection?

    有谁知道 SqlDataAdapter Dispose 方法是否实际关闭或处置任何 SqlConnections 我加载了 Reflector 发现 SqlDataAdapter 继承自 DbDataAdapter 如果我反汇编并查看该类中
  • Android dataBinding - 如何使用 bool 资源触发布局的可见性

    我目前在 android 中有一个 bool xml 文件 如下所示
  • 如何在没有任何权限检查的情况下从相对路径获取最小绝对路径?

    假设我有两个路径字符串 一个是绝对路径字符串 例如 C abc xyz 以及一个相关的 例如 def 我如何可靠地将它们组合起来以产生最小形式 C abc def 由于该过程应该适用于 NET 的 I O API 支持的任何形式的路径 即
  • Python3 PyQt4 创建一个简单的 QCheckBox 并更改布尔变量

    所以我一直在尝试使用Python 3 3和PyQt4编写一个GUI 我已经完成了一些教程 但仍然无法弄清楚如何让复选框检查和取消检查全局变量中的触发更改 我无法让它触发任何事情 因为所有教程都使用对我不起作用的方法 该程序太大 无法作为一个
  • Perl 增量运算符

    a 10 b a a a print b 我得到了答案 37 谁能解释一下这个操作是如何进行的以及结果是如何得到 37 的 按照我的逻辑 它应该是 36 a a a 11 12 13 36 但我得到了答案 37 Perl 的执行方式为 a
  • 带有变量的sql use语句

    我正在尝试使用 SQL 语句切换当前数据库 我已尝试以下操作 但所有尝试均失败 1 USE DatabaseName 2 EXEC sp sqlexec Sql where Sql USE DatabaseName 添加更多细节 编辑 我想
  • 复制构造函数省略? [复制]

    这个问题在这里已经有答案了 可能的重复 为什么析构函数只被调用一次 https stackoverflow com questions 6422114 why has the destructor been called only once
  • 带有自定义项目的底部导航视图(actionLayout)

    我想在新的中添加一个自定义项目底部导航视图 https developer android com reference android support design widget BottomNavigationView html 有很多关
  • 并排条形图,其中各列按组比例(相对频率条形图)

    数据集 gender lt c Male Male Male Female Female Female Male Male Male Female Female Female Female Female Male Female Female