每个 x 轴刻度具有不同因子顺序的条形图

2024-01-12

我正在回答这个问题 https://stackoverflow.com/questions/74283906/overlaying-geom-bar-and-missing-values@Léo 想要一个条形图stat = "identity" and position = "identity"。这会导致出现条形图(每个值对应一个fill审美)相互重叠,使一些隐藏起来:

他的解决方案是设置alpha = 0.5,但他不喜欢这个结果,因为每个 x 轴刻度中的颜色以不同的方式混合。因此,我认为解决方案是为每个 x 轴刻度设置不同的颜色顺序,但我不知道如何在 ggplot 中执行此操作。

我尝试过的:

虚拟数据:

library(tidyverse)
set.seed(7)

df = tibble(
  categories = rep(c("a", "b", "c"), each = 3) %>% factor(),
  xaxis = rep(1:3, 3) %>% factor(),
  yaxis = runif(9))

绘制“原始”图表的内容如上所示:

ggplot() +
  geom_bar(aes(xaxis, yaxis, fill = categories), df,
           stat = "identity", position = "identity")

我的尝试:改变categories级别顺序并创建不同的geom_bar对于每个 x 轴值,使用 for 循环:

g = ggplot()

for(x in unique(df$xaxis)){
  df.x = df %>% filter(xaxis == x) %>% mutate(categories = fct_reorder(categories, yaxis))
  g = g + geom_bar(aes(xaxis, yaxis, fill = categories), df.x,
                   stat = "identity", position = "identity")}
plot(g)

df.x 上的级别实际上每次迭代都会更改为正确的顺序,但会生成与之前相同的图表。


我在下面绘制了一个传统的重叠图和(如果我理解正确的话)您想要的图来比较结果:

library(tidyverse)
set.seed(7)

df = tibble(
  categories = rep(c("a", "b", "c"), each = 3) %>% factor(),
  xaxis = rep(1:3, 3) %>% factor(),
  yaxis = runif(9))

ggplot() +
  geom_bar(aes(xaxis, yaxis, fill = categories, group=categories), df, alpha=0.8,
           stat = "identity", position = position_dodge(width=0.3,preserve = "single"))
df<-df %>% group_by(xaxis) %>% mutate(rank=rank(-yaxis)) %>% 
  pivot_wider(values_from=yaxis, names_from = rank, values_fill = 0, 
              names_sort = T, names_prefix = "rank")

print(df)
#> # A tibble: 9 × 5
#> # Groups:   xaxis [3]
#>   categories xaxis rank1 rank2  rank3
#>   <fct>      <fct> <dbl> <dbl>  <dbl>
#> 1 a          1     0.989 0     0     
#> 2 a          2     0     0.398 0     
#> 3 a          3     0     0     0.116 
#> 4 b          1     0     0     0.0697
#> 5 b          2     0     0     0.244 
#> 6 b          3     0.792 0     0     
#> 7 c          1     0     0.340 0     
#> 8 c          2     0.972 0     0     
#> 9 c          3     0     0.166 0

g <- reduce(
  map(paste0("rank",1:3),
    ~geom_bar(aes(xaxis, .data[[.x]], fill=categories), stat="identity", position="identity")), 
    `+`, .init = ggplot(df) )

g

Created on 2022-11-02 with reprex v2.0.2 https://reprex.tidyverse.org

EDIT

多亏了 Park 和this https://stackoverflow.com/questions/62078386/reorder-overlaid-bars-in-plot-so-longer-bars-are-in-back-r post

set.seed(7)

df = tibble(
  categories = rep(c("a", "b", "c"), each = 3) %>% factor(),
  xaxis = rep(1:3, 3) %>% factor(),
  yaxis = runif(9))

df %>% group_by(xaxis) %>% arrange(rank(-yaxis)) %>% 
ggplot() + geom_bar(aes(xaxis, yaxis, fill=categories), stat="identity", position="identity")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

每个 x 轴刻度具有不同因子顺序的条形图 的相关文章

  • 如何添加链接以从我的 R闪亮应用程序在新窗口中打开 pdf 文件?

    我可以使用 a 从我的 Shiny 应用程序添加到外部站点的超链接 a google href http www google com 但如何创建一个链接来打开 pdf 或类似 文件 看起来应该很简单 但我找不到任何例子 我的问题与此类似
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 为什么数据帧上的 is.vector 不返回 TRUE?

    tl dr R 中的向量到底是什么 长版 R 中很多东西都是向量 例如 数字是长度为 1 的数值向量 is vector 1 1 TRUE 列表也是一个向量 is vector list 1 1 TRUE 好的 所以列表是一个向量 显然 数
  • 尝试使用 JRI 将 R 与我的 Java 应用程序集成,但出现错误。谁能解释一下原因和解决办法吗?

    我需要将 Java 与 R 集成来运行一些数学命令并使用 R 的功能进行绘图 以下部分代码给出了错误 public static void main String args HelloRWorld r new HelloRWorld r h
  • purrr::可能函数可能无法与map2_chr函数一起使用

    我怀疑这是 purrr 包中的错误 但想先在 StackOverflow 中检查我的逻辑 在我看来 possibly功能在内部不起作用map2 chr功能 我正在使用 purrr 版本 0 2 5 考虑这个例子 library dplyr
  • 正态分布平均值的贝叶斯推理玩具 R 代码 [降雪量数据]

    我有一些降雪观测 x lt c 98 044 107 696 146 050 102 870 131 318 170 434 84 836 154 686 162 814 101 854 103 378 16 256 我被告知它遵循正态分布
  • 不同编程语言中的浮点数学

    我知道浮点数学充其量可能是丑陋的 但我想知道是否有人可以解释以下怪癖 在大多数编程语言中 我测试了 0 4 到 0 2 的加法会产生轻微的错误 而 0 4 0 1 0 1 则不会产生错误 两者计算不平等的原因是什么 在各自的编程语言中可以采
  • 实现 XGboost 自定义目标函数

    我正在尝试使用 XGboost 实现自定义目标函数 在 R 中 但我也使用 python 所以有关 python 的任何反馈也很好 我创建了一个返回梯度和粗麻布的函数 它工作正常 但是当我尝试运行 xgb train 时它不起作用 然后 我
  • 如何按时间间隔匹配数据帧?

    这是我从数据记录器导入原始数据时经常出现的问题 温度记录仪设置为每十分钟记录一次温度 单独的气体记录仪设置为记录最后十分钟间隔内使用的气体 我想将这两个记录器的数据合并到一个数据框中进行绘图和分析 但时间并不完全一致 我希望每十分钟的时间段
  • 将列表中的每个元素转换为数据框中的一列

    假设我有以下列表 d library combinat d permn c a b c 这看起来如下 1 1 a b c 2 1 a c b 3 1 c a b 4 1 c b a 5 1 b c a 6 1 b a c 是否可以将此列表的
  • 多个动态滤镜更新闪亮

    我希望能够让 UI 输入闪亮 并根据用户之前的选择进行自我更新 因此 在下面的示例中 预期的行为是用户选择cyl vsor carb那么这将 过滤数据集mtcars用于创建绘图 即用户根据过滤条件调整绘图并 更新其他过滤器中的剩余输入选择
  • 我可以使用哪个 R 函数来查找两条线的交点?

    我刚刚研究了 stackoverflow 上所有的 在 R 中寻找交集 问题 它们要么是关于曲线 要么是关于分布像这个 https stackoverflow com questions 20519431 finding point of
  • `as.matrix` 和 `as.data.frame` S3 方法与 S4 方法

    我注意到定义as matrix or as data frame作为 S4 类的 S3 方法 使例如lm formula objS4 and prcomp object 开箱即用 如果它们被定义为 S4 方法 则这不起作用 为什么将方法定义
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • 在r中的某个阈值处破坏 cumsum() 函数

    例如我有以下代码 cumsum 1 100 我想打破它 如果一个元素 i 1 大于3000 我怎样才能做到这一点 因此 而不是这个结果 1 1 3 6 10 15 21 28 36 45 55 66 78 91 105 120 136 15
  • R Shinydashboard 自定义 CSS 到 valueBox

    我一直在尝试将 valueBox 的颜色更改为自定义颜色 超出 validColors 中可用的颜色 但一直无法这样做 我知道有一种方法可以使用标签来包含自定义 CSS 但是我无法将它们放在正确的位置 ui lt dashboardPage
  • 从数据框中绘制多条平滑线

    我对 R 比较陌生 我正在尝试绘制从 csv 文件加载的数据框 数据由 6 列组成 如下所示 xval col1 col2 col3 col4 col5 第一列 xval 由一系列单调递增的正整数 例如 10 40 60 等 组成 其他列
  • 增加雷达图中长轴标签的空间

    我想创建一个雷达图ggirahExtra ggRadar 问题是我的标签很长并且被剪掉了 我想我可以通过添加在标签和绘图之间创建更多空间margin margin 0 0 2 0 cm to element text in axis tex
  • 如何获取分类数据的分组条形图

    I have a big dataset with information about students And I have to build a graph of dependencies between different value
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个

随机推荐

  • endUpdates 后 UITableView 部分页脚视图位置

    在 ios8 上 我使用核心数据表视图控制器 删除行后 我的部分页脚视图突然一直下降到底部UITableView 当我滚动表格视图时 页脚视图返回到其位置 如何解决这个问题以及为什么会发生这种情况 这是代码以防万一 void control
  • Spark 读取镶木地板文件时出现问题

    我有 2 个镶木地板零件文件part 00043 0bfd7e28 6469 4849 8692 e625c25485e2 c000 snappy parquet 是 2017 年 11 月 14 日运行的部分文件 和part 00199
  • Cube、Rollup 和 GroupBy 运算符之间有什么区别?

    我找不到有关差异的任何详细文档 我确实注意到了差异 因为交换时cube and groupBy函数调用 我得到不同的结果 我注意到对于结果使用cube 我在以前使用的表达式上得到了很多空值groupBy 它们的工作方式不同 groupBy简
  • 如何控制鼠标光标? [复制]

    这个问题在这里已经有答案了 我的表单只有几个按钮 我想知道现在光标下有什么按钮 附 也许它是重复的 但我找不到这个问题的答案 看一下GetChildAtPoint http msdn microsoft com en us library
  • 自定义 QStyledItemDelegate 以绘制多种颜色的文本

    我想在一个中显示两列QTableWidget显示两次刺痛之间的差异 通过之前的一些编辑距离算法计算 这些部分存储在每个部分的数据中QTableWidgetItem as a QStringList 第一部分必须显示为黑色 接下来的部分必须显
  • 如何通过poi为word中的不同部分设置页码

    我的文档由三部分组成 封面 内容和正文 我想为每个部分设置不同的页码 封面不需要页码 内容页码采用罗马数字 正文页码采用希腊数字 用POI可以实现吗 Apache poi到目前为止 只有 abel 创建了三种类型的页眉 页脚 页眉页脚类型
  • Java FileReader 找不到文件

    我决定开始一个新问题 以便它可以严格关注 FileReader 错误 这是一种接受文件名和新文件所需的输出名称的方法 假设输入的文件名是 hello txt 该方法使其类似于 home User hello txt 它作为参数进入 File
  • 获取配置文件的跨平台路径(C/C++)

    我想将应用程序的设置存储在配置文件中 在 Linux 和 Mac 下 这 可能 是 home user config app conf 而在 Windows 下 它 可能 是 C Documents and Settings usernam
  • 如何获取Windows域名?

    我如何获取机器的域名 如果机器实际上已加入域 当然 如果机器没有加入域 该函数应该返回 null or 一个空字符串 或者 机器的名称 或 Notes the NetGetJoinInformation http msdn microsof
  • 将地址清理程序与 MSVC 结合使用时应用程序崩溃

    我正在尝试将地址清理程序与 MSVC 一起使用 Visual Studio 安装程序显示我有 Visual Studio Community 2019 版本 16 9 0 我有最基本的C 程序 int main return 0 CMake
  • 我应该如何从串行端口数据触发的 C# 事件更新我的 UI?

    我是一名技术级员工 帮助在制造测试环境中进行一些编码 具体问题是在 C 中处理事件 不仅仅是 Button click 特别是如果我有一个通过串行端口传入的数据流 并且必须根据通过串行端口传入的内容实时更新 UI 例如 如果我有两种方法最终
  • WordPress 主题上传错误 PCLZIP_ERR_BAD_FORMAT

    我对 php 和 WordPress 都很陌生 但是由于某些需要 我只能使用 WordPress 因此 首先我阅读了一个教程并创建了自己的 WordPress 主题 当我尝试上传我的主题时 出现以下错误 The package could
  • 这段Python代码(谷歌应用引擎)中产生“405 Method Not allowed”的原因是什么?

    我是一个 python 新手 我正在尝试构建一个应用程序 逐步复制我之前在课堂上教授的内容 但我收到了 405 Method Not allowed 错误 Here what the professor did 这是我所做的 有人能指出下面
  • C中静态全局变量和非静态全局变量的区别[重复]

    这个问题在这里已经有答案了 静态全局变量 和 静态全局变量 有什么区别 C 中的 非静态全局变量 请用一些例子解释它们有何不同 因为 全局静态变量和简单全局变量在整个程序中都保持活动状态 并且可以在任何块中使用 我很困惑如何区分它们 有人可
  • 为什么我必须在 Git 中推送刚刚从源拉取的更改?

    我的本地计算机上有一个从远程服务器克隆的 Git 存储库 我克隆的 Git 存储库是一个裸存储库 仍然让我困惑的一件事是 当原产地发生变化时 我确实git pull origin master更新我的本地存储库 git status然后告诉
  • C# NUnit TestCaseSource 传递参数

    我有以下方法可以生成一组测试用例 public IEnumerable
  • IntelliJ:无法解析符号“springframework”

    我正在尝试用 Spring 开始我的第一个项目 我使用 IntelliJ idea 而且我对它也有点陌生 但无论如何 我按照 Jetbrains 网站上写的步骤操作 我不知道我做错了什么 但我在默认创建的文件的第一个文件上遇到了很多错误 B
  • 定时器作业功能的范围

    我第一次写定时器作业 我正在遵循可以通过谷歌搜索获得的示例作为我的参考 在许多此类文章中 我遇到了被激活到网站集级别或网站级别的计时器作业功能 我觉得这很奇怪 因为特定 Web 应用程序只能有一个计时器作业实例 难道所有计时器作业功能都不应
  • 在 mvc 5 项目中安装 ninject mvc 3 后出现问题

    我创建了新的 asp mvc 5 项目 项目目标 NET 4 5 我安装了 ninject mvc 3 nuget 包 但是当我运行项目时我收到此错误NinjectWebCommon cs in CreateKernel method 发生
  • 每个 x 轴刻度具有不同因子顺序的条形图

    我正在回答这个问题 https stackoverflow com questions 74283906 overlaying geom bar and missing values L o 想要一个条形图stat identity and