在堆积条形图上按列显示百分比

2023-12-12

我正在尝试绘制一个堆积条形图,显示列中每个组的相对百分比。

这是我的问题的说明,使用默认的 mpg 数据集:

mpg %>%
  ggplot(aes(x=manufacturer, group=class)) +
  geom_bar(aes(fill=class), stat="count") +
  geom_text(aes(label=scales::percent(..prop..)),
    stat="count",
    position=position_stack(vjust=0.5))

And this is the output: enter image description here

我的问题是这个输出显示每个的百分比class相对于总计,而不是每个项目中的相对百分比制造商.

例如,我希望第一列(奥迪)显示棕色(紧凑型)的 83.3% (15/18) 和绿色(中型)的 16.6% (3/18)。

我在这里发现了类似的问题:如何在 ggplot2 中绘制堆叠条形图,显示基于组的百分比?

但我想知道在 ggplot2 中是否有更简单的方法来做到这一点,特别是因为我的实际数据集在最终将数据传输到 ggplot2 之前使用一堆 dplyr 管道来处理数据。


如果我将您的问题与您提供的链接进行比较,区别在于链接本身“计数”。我就是这么做的。我不确定这是否适合您的真实数据。

library(ggplot2)
library(dplyr)

mpg %>%
  mutate(manufacturer = as.factor(manufacturer),
         class = as.factor(class)) %>%
  group_by(manufacturer, class) %>%
  summarise(count_class = n()) %>%
  group_by(manufacturer) %>%
  mutate(count_man = sum(count_class)) %>%
  mutate(percent = count_class / count_man * 100) %>%
  ggplot() +
  geom_bar(aes(x = manufacturer,
               y = count_man, 
               group = class,
               fill = class), 
           stat = "identity") +
  geom_text(aes(x = manufacturer,
                y = count_man,
                label = sprintf("%0.1f%%", percent)),
            position = position_stack(vjust = 0.5))

根据评论进行编辑:

我犯了一个错误,选择了错误的列y

library(ggplot2)
library(dplyr)

mpg %>%
  mutate(manufacturer = as.factor(manufacturer),
         class = as.factor(class)) %>%
  group_by(manufacturer, class) %>%
  summarise(count_class = n()) %>%
  group_by(manufacturer) %>%
  mutate(count_man = sum(count_class)) %>%
  mutate(percent = count_class / count_man * 100) %>%
  ungroup() %>%
  ggplot(aes(x = manufacturer,
             y = count_class,
             group = class)) +
  geom_bar(aes(fill = class), 
           stat = "identity") +
  geom_text(aes(label = sprintf("%0.1f%%", percent)),
            position = position_stack(vjust = 0.5))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在堆积条形图上按列显示百分比 的相关文章

  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • R 更改小数位且不四舍五入

    gt signif 1 89 digits 2 1 1 9 我想要1 8 这有点笨拙 但它会起作用并保持所有数字 x lt 1 829380 trunc dec lt function x n floor x 10 n 10 n Resul
  • 从 X、Y、Z 数据、Excel 或其他工具进行 3D 绘图

    我的数据看起来像这样 1000 13 75 2 1000 21 79 21 1000 29 80 02 5000 29 87 9 5000 37 88 54 5000 45 88 56 10000 29 90 11 10000 37 90
  • 使用healpy通过HEALPix像素化制作2D直方图

    数据是天空中物体的坐标 例如如下 import pylab as plt import numpy as np l np random uniform 180 180 2000 b np random uniform 90 90 2000
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 为绘图制作 2D 图例 - 双变量分区统计图

    我一直在玩双变量 choropleth 地图 并且一直在如何创建类似于 2d 图例的问题上陷入困境约书亚 史蒂文斯 http www joshuastevens net cartography make a bivariate chorop
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • 使用 dplyr::filter 的整洁方式是什么?

    使用下面的函数调用foo c b 输出以内联方式显示 正确的写作方式是什么df gt filter x gt x 我已经包含了一个使用的示例mutate以整洁的风格与之对比filter foo lt function variables x
  • 从数据框创建稀疏矩阵

    我正在做一项作业 尝试为 Netflix 奖项数据构建协作过滤模型 我使用的数据位于 CSV 文件中 我可以轻松地将其导入到数据框中 现在我需要做的是创建一个稀疏矩阵 其中用户作为行 电影作为列 每个单元格都由相应的评级值填充 当我尝试绘制
  • R - tidyr - 变异并传播多列

    我在 R 中有以下数据框 my df test lt data frame V1 c 1 2 1 V2 c A B A V3 c S1 S1 S2 V4 c x x x V5 c y y y V6 c A B C V7 c D E F my
  • 从“parallel”包中的非基础 R 包调用函数,而无需在函数中将它们库化

    假设我正在尝试运行以下代码 library gregmisc library parallel myfunction lt function x combinations 10 x 1 10 cl lt makeCluster getOpt
  • 在多行中打印带有列名称的 R 数据框

    我有一个带有长列名称的 R 数据框 所以当我打印数据框时它太宽了 有没有一种简单的方法可以将数据框打印到屏幕上 并且列名出现在多行中 我知道我可以缩短名字 但我不想这样做 当奥斯卡的答案被接受时 我想这可能真的是一个答案 不幸的是 这只是复
  • 如何匹配R中列之间的多个对应值

    我有一个结构如下的数据框 ID Value1 Value2 1 a d g f 12 14 15 9 2 b c e 5 18 20 3 h i j 6 7 25 所以我有一个 ID 和两个值 对于值 1 有多个对应于值 2 的选项 我想最
  • R Tidytext 和 unnest_tokens 错误

    对 R 非常陌生 已经开始使用 tidytext 包 我正在尝试使用参数来填充unnest tokens函数 这样我就可以进行多列分析 所以而不是这个 library janeaustenr library tidytext library
  • ggplot 直方图相对于轴的位置不正确

    我试图这样绘制直方图 Todo lo haremos con base en un variable aleatoria Uniforme 0 1 set seed 26 n 10000 U lt runif n n Supongamos
  • 使用许多特殊字符将 R 连接到 HANA 数据库时出现问题

    我在将 HANA 数据读入 R 时遇到问题 我已通过以下方式建立了连接 ch lt odbcConnect HANA uid USER pwd PW 并确认我已通过以下方式连接 sqlTables ch 这会调出我的表格列表 对我想要拉取的
  • 迭代字符串 R 的字符

    有人可以解释一下为什么这不会在 R 中单独打印所有数字 numberstring lt 0123456789 for number in numberstring print number 字符串不就是字符数组吗 在 R 中该怎么做 In
  • R中将矩阵拆分为子矩阵的函数

    我有一个 16 行 12 列的矩阵 M 我想将其拆分为 16 个矩阵的数组 每个矩阵有 4 行 3 列 我可以通过以下方式手动完成 M matrix sample 0 127 16 12 replace TRUE c 16 12 ma1 M
  • 如何一次导入多个 .csv 文件?

    假设我们有一个包含多个 data csv 文件的文件夹 每个文件包含相同数量的变量 但每个文件来自不同的时间 R 中有没有办法同时导入它们 而不必单独导入它们 我的问题是 我有大约 2000 个数据文件需要导入 并且必须使用以下代码单独导入
  • 使用函数参数作为 R 中新数据框的名称

    这很简单 但我已经搜索并未能找到这个小问题的解决方案 我想使用函数的参数作为新数据框的名称 例如 assign dataset lt function dataname x lt c 1 2 3 y lt c 3 4 5 dataname

随机推荐

  • Linux 脚本选择菜单

    我需要使用 select 循环和 case 指令创建一个包含六个选项的选择菜单 但不是菜单选项的 ECHO 命令 它们必须显示如下 1 opt1 2 opt2 3 opt3 4 opt4 5 opt5 6 opt6 并且不喜欢 1 opt1
  • 选择除了 BeautifulSoup 中某些类的 div 之外的所有 div

    正如中所讨论的这个问题一个人可以轻松得到所有div具有某些类别 但在这里 我有一个我想要排除的类列表 并且想要获取列表中没有给出任何类的所有 div For i e classToIgnore class1 class2 class3 现在
  • 保护 PHP 的 Web 服务

    我正在 android 中开发一个小项目 它使用 php webservices 的调用 我希望我的网络服务受到保护 但是通过使用 GET POST 请求方法 我认为它没有受到太多保护 经过谷歌搜索后 我在 phpseclib 中找到了 R
  • 用python调用同一个类中的变量

    我试图在同一类的另一个函数内调用函数中定义的变量 但使用self不起作用 class Project def function1 self a hello world def function2 self b self a I am ali
  • jqgrid动态列和json数据[重复]

    这个问题在这里已经有答案了 我新了解了 jqgrid 我想通过动态数据和列创建网格 我问我的问题并阅读此内容link但我需要更多例子 在评论中我的答案在您之前的回答中 我简短地描述了如何根据服务器返回的数据更改列标题的想法 为了让大家更清楚
  • Javascript查找两个数组中缺失元素的索引

    我有以下 JavaScript 其中有一些列表 var deleteLinks remove button remove from cart deleteLinks on click function ev ev preventDefaul
  • iOS UITableView contentOffset 当键盘显示时

    我正在尝试设置contentOffset of a tableView当 的时候keyboard被呈现 实际的代码在一个CustomTableView UITableView
  • 我可以使用 SimpleXML 和 Xpath 直接选择元素属性吗?

    即 我想使用 xpath 表达式 banana color 和以下示例 xml 返回字符串 yellow
  • 加密将捆绑在 pyexe 文件中的 Sqlite db 文件

    我一直致力于开发这个分析工具 以帮助解释和分析软件包中捆绑的数据库 对我们来说 以只能通过我们的软件访问的方式保护数据库非常重要 在 Python 中实现它的最佳方法是什么 我知道可能没有最终的解决方案 但威慑才是真正重要的 非常感谢 有人
  • 小数和整数的自定义模型绑定器:如何在 MVC 之前获取字符串值并进行更智能的转换

    我想扩展默认模型绑定 使其在处理数字时更加智能 当游戏中出现逗号和小数点时 默认设置效果非常糟糕 我正在尝试做一个新的活页夹 Public Class SmartModelBinder Inherits DefaultModelBinder
  • 使用 Rails/Jquery 创建动态更新的进度条?

    这是我的第一个 一般 问题 我不是在寻找任何人为我编写一行代码 我只需要一些建议 我正在寻找一种方法来实现进度条 温度计 最好是在 jquery 中 当用户在我的 Rails 应用程序中将数据输入表单时动态更新 我不关心表单字段的值 只关心
  • 通过 _id 在 mongodb 数据库中的对象数组上查找

    我正在尝试在对象数组中查找对象的 id 该 id 与文档中其他字段具有相同的字段名称 id 这是我的模型 简要 var CardSchema new mongoose Schema beName String beLink String c
  • 使用 Facebook iOS SDK 在用户墙上发布照片

    我正在尝试将相机中的照片上传到用户的 Facebook 墙上 我不完全确定正确的策略是什么 但从周围阅读来看 似乎要做的事情是将照片上传到相册 然后有人在墙上发布该相册 照片的链接 理想情况下 这将涉及对话 但据我所知这是不可能的 我已成功
  • BlackBerry ObjectChoiceField 不接受带空格的国家/地区名称

    我正在黑莓应用程序中开发一个注册页面 我将输入的所有字段发送到本地服务器 国家 地区是表单字段之一 位于 ObjectChoiceField 中 每当用户选择一个具有多个单词的国家 地区 例如 美利坚合众国 时 就会显示注册失败 当用户选择
  • v-model 并选择多个

    我认为有以下代码 div class item editor line div
  • 如何使用最新的 MinGW 将 qmake 设置为 C++14?

    I know there are many 重复项 这是我的测试版 CONFIG c 14 SOURCES main cpp 和我的 main cpp int main 根据许多重复 这应该给我 C 14 但是 当我使用构建项目时Qt 创建
  • iOS 6.0 限制导航控制器内的自动旋转?

    我还应该做什么 BOOL shouldAutorotateToInterfaceOrientation UIInterfaceOrientation toInterfaceOrientation return toInterfaceOrie
  • 如何执行ajax输出脚本

    我收到 ajax 输出成功数据 其中数据包含一些 html 文本和脚本 但脚本没有执行 我该如何执行脚本 假设 Ajax 响应 obj 是 div something div 上面的代码是我的 Ajax 响应 div 正在渲染 但警报不起作
  • 按字典键的整数对字典进行排序

    假设我有一本这样的字典 thedict 1 the 2 2 3 five 10 orange 我想按键对这本字典进行排序 如果我执行以下操作 for key value in sorted thedict iteritems print k
  • 在堆积条形图上按列显示百分比

    我正在尝试绘制一个堆积条形图 显示列中每个组的相对百分比 这是我的问题的说明 使用默认的 mpg 数据集 mpg gt ggplot aes x manufacturer group class geom bar aes fill clas