ggplot2 Facet Wrap 按 y 轴而不是 x 轴重新排序

2023-12-15

我想绘制多面条形图,并从左到右从最大到最小值对它们进行排序。我应该能够使用与此类似的代码来做到这一点:

library(ggplot2)
ggplot(mpg, aes(reorder(cyl, -hwy), hwy)) + 
  geom_col() + 
  facet_wrap(~ manufacturer, scales = "free")

相反,我得到的是按 x 轴排序,恰好是“cyl”,从最小到最大值。如何按 y 轴降序排列,使其看起来像帕累托图?它也必须是多面的。谢谢。


这是一种不同的方法,可以利用以下两个函数直接在 ggplot 中执行here。我将使用 eipi10 的示例:

library(tidyverse)
mpg$hwy[mpg$manufacturer=="audi" & mpg$cyl==8] <- 40

dat <- mpg %>% group_by(manufacturer, cyl) %>% 
  summarise(hwy = mean(hwy)) %>% 
  arrange(desc(hwy)) %>% 
  mutate(cyl = factor(cyl, levels = cyl))

功能:

reorder_within <- function(x, by, within, fun = mean, sep = "___", ...) {
  new_x <- paste(x, within, sep = sep)
  stats::reorder(new_x, by, FUN = fun)
}


scale_x_reordered <- function(..., sep = "___") {
  reg <- paste0(sep, ".+$")
  ggplot2::scale_x_discrete(labels = function(x) gsub(reg, "", x), ...)
}

plot:

ggplot(dat, aes(reorder_within(cyl, -hwy, manufacturer), y = hwy), hwy) + 
  geom_col() + 
  scale_x_reordered() +
  facet_wrap(~ manufacturer, scales = "free") +
  theme(axis.title=element_blank())

enter image description here

对于升序,您将:reorder_within(cyl, hwy, manufacturer)

没有函数的绘图:

ggplot(dat, aes(cyl, y = hwy)) + 
  geom_col() + 
  facet_wrap(~ manufacturer, scales = "free") +
  theme(axis.title=element_blank())

enter image description here

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

ggplot2 Facet Wrap 按 y 轴而不是 x 轴重新排序 的相关文章

  • R 中具有 p 值的相关矩阵

    假设我想要传导相关矩阵 library dplyr data iris iris gt select if is numeric gt cor y iris Petal Width method spearman gt round 2 现在
  • 如何在R中创建for循环? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在 R 编程中启动 for 循环 https stackoverflow com questions 4162363 how to start a for loop in r programmin
  • 如何创建 highcharter 事件函数以在 Shiny R 中创建“下拉函数”

    我正在建造一个shiny应用程序 我想要完成的事情之一是创建一个下拉菜单 我想将劳动力变量绘制为不同级别的年份变量的函数 请参阅下面的示例数据框 year level 2 level 3 labour 1 2013 10 101 1 2 2
  • R 无法回忆起内存中的对象

    我正在构建一个包含多个步骤的函数 其中每个步骤都会创建一个对象 某个步骤失败 temp3 并且无法找到前面的步骤对象 错误 未找到对象 temp2 我不知道为什么 我有类似的函数 遵循完全相同的结构 每个步骤都遵循先前创建的对象 在函数内
  • 连接树状图和热图

    我有一个heatmap 一组样本的基因表达 set seed 10 mat lt matrix rnorm 24 10 mean 1 sd 2 nrow 24 ncol 10 dimnames list paste g 1 24 sep p
  • 如果值大于或小于,则替换数据框中的值

    我在 R 中操作数据帧时遇到问题 这是 R 中的基本内容 但我找不到执行此类操作的最佳命令 虚拟示例 Var1 20 300 39 Var2 49 23 91 Var3 0 239 210 我怎样才能用10如果值小于 则在第 2 列中10
  • Matlab 中是否有相当于 R 的 dput() 的函数?

    Matlab 中是否有相当于 R 的 dput 的函数 dput 将 R 对象的 ASCII 文本表示形式写入文件或连接 UPDATE 1 添加了递归和对单元格的支持 UPDATE 2 添加了对结构的支持 UPDATE 3 增加了对逻辑 整
  • R中data.frame(列表)的列平均值

    Data https i stack imgur com ZYsmv jpg 请 我需要计算此 data frame 中维吉尼亚币 Sepal Length 列的平均值 Sepal Length Sepal Width Petal Leng
  • ggplot 按因子和梯度颜色

    我正在尝试绘制一个对两个变量 一个因子和一个强度 进行着色的图 我希望每个因素都是不同的颜色 并且我希望强度是白色和该颜色之间的渐变 到目前为止 我已经使用了诸如对因子进行分面等技术 将颜色设置为两个变量之间的相互作用 并将颜色设置为因子并
  • SparkR 和 Sparklyr 之间导入 parquet 文件所需的时间差异

    我正在使用 databricks 导入镶木地板文件SparkR and sparklyr data1 SparkR read df dbfs data202007 source parquet header TRUE inferSchema
  • 使用 broom 和 tidyverse 对不同的因变量进行回归

    我正在寻找一个 Tidyverse 扫帚解决方案来解决这个难题 假设我有不同的 DV and a specificIVS 集 我想执行一个考虑每个 DV 和这组特定 IV 的回归 我知道我可以使用类似 for i in 或 apply fa
  • 如何在R中安装pivot_long()和pivot_wide()

    如果您想尝试这些新功能 pivot wide and pivot long 需要安装开发版tidyr devtools install github tidyverse tidyr 但我还没有实现它 我安装了一系列库 除了一个之外 vctr
  • k折交叉验证 - 如何自动获得预测?

    这可能是一个愚蠢的问题 但我只是找不到一个包来做到这一点 我知道我可以编写一些代码来获得我想要的东西 但如果有一个函数可以自动完成它那就太好了 所以基本上我想对 glm 模型进行 k 倍交叉验证 我想自动获取每个验证集的预测和实际值 因此
  • R 中 optim() 的优化(L-BFGS-B 需要“fn”的有限值)

    我在 R 中使用 optim 来求解涉及积分的可能性时遇到一些问题 我收到一条错误消息 optim par c 0 1 0 1 LLL method L BFGS B lower c 0 L BFGS B 需要 fn 的有限值 中的错误 下
  • R:使用数据框 A 中某个日期之前的值填充数据框 B 中的行

    这可能非常复杂 我怀疑需要先进的知识 我现在有两种不同类型的 data frames 我需要组合 数据 数据框A 按患者 ID 列出所有输血日期 每次输血均由单独的行表示 患者可以进行多次输血 不同的患者可以在同一天进行输血 Patient
  • 使用 ggplot 为各个图例值选择所选颜色(HSV 或 HCL 或 RGB)

    我有一个类似这样的数据集 data lt read table text Me EE PE DE TE DEE CE 1 1 1 4 5 2000 0 50 0 2547 0 69 2 1 2 2 4 3000 NA 0 5896 2 56
  • 更快地评估从右到左的矩阵乘法

    我注意到以二次形式评估矩阵运算右到左明显快于左到右在 R 中 取决于括号的放置方式 显然它们都执行相同的计算量 我想知道为什么会这样 这与内存分配有什么关系吗 A 5000 5000 B 5000 2 A matrix runif 5000
  • 从拟合的 lm 或 glm [R] 获取每个因子水平(以及交互作用)的数据数量

    我在 R 中有一个逻辑回归模型 其中所有预测变量都是分类变量而不是连续变量 除了响应变量 它显然也是分类 二元变量 打电话时summary model name 有没有办法在每个因子水平中包含一个表示观测值数量的列 我在 R 中有一个逻辑回
  • R - 加速近似日期匹配。 idata.frame?

    我正在努力有效地执行两个数据帧之间的 关闭 日期匹配 这个问题探索了一个解决方案 使用idata frame来自plyr包 但我也对其他建议的解决方案感到非常满意 这是两个数据框的非常简单的版本 sampleticker lt data f
  • 在并行包中的 R 的 par*apply 函数内部使用 Rcpp 函数

    我试图了解背后发生的事情Rcpp sourceCpp 调用并行环境 最近 问题中部分解决了这个问题 在 Windows 上使用 parLapply 中的 Rcpp 函数 https stackoverflow com questions 2

随机推荐

  • 反射不适用于 Android 发布的 apk。即使禁用了 proguard/minify

    目前我面临一个奇怪的问题 我的应用程序的发布 apk 抛出 NoSuchFieldExceptions 它在调试 apk 上运行良好 我试图获取的字段是 android widget 打包的 我还努力启用 proguard 并在 progu
  • 如何更改自定义子面板中的默认排序 - Sugarcrm?

    我想在自定义面板中按 创建日期 进行默认排序 您能指导我吗 如何将其设为 创建日期 作为默认排序 请帮我 In your layout defs改变sort by到所需的列 在此示例中 用于排序的默认列是date entered
  • jinja2 如何删除日期时间中的微秒

    在 Jinja2 模板中 我想显示最后一次登录 Last Login user last seen last seen应该是 sqlite 中的日期时间对象 它总是给我这样的东西 2014 07 27 23 09 36 467761 在模板
  • 卡桑德拉更新专栏

    我如何更新 cassandra 数据库中的列 columnfam username name edds surname surname email email protected 例如我需要更新姓氏 我使用 PHP 客户端 PHPCASSA
  • 当函数是 lambda 或嵌套函数时,concurrent.futures.ProcessPoolExecutor 会挂起

    任何人都可以深入了解为什么使用 lambda 或嵌套函数 f 将使concurrent futures ProcessPoolExecutor挂在下面的代码示例中吗 import concurrent futures def f2 s re
  • 为什么 postgres 的日期范围上限函数返回独占边界?

    我为这篇文章创建了一个 sql 小提琴 http sqlfiddle com 15 7b5d7 1 0 问题 1 为什么插入一条记录时会出现daterange具有独占边界的实际上存储了具有包含下限和独占上限的范围 为什么 pg 不将它们都存
  • C 函数分配不正确的浮点值

    我试图返回一个浮点值并将其分配给一个浮点变量 但新浮点值与返回的值不同 float getVoltageReading return 1 2f void updateUIReadings uint8 t menuID float integ
  • IOS 10 宽色:我需要担心吗?

    The 发行说明iOS 10 有一个标题为广色域 让我感到困惑的是这一行 如果您的应用程序依赖 UIKit 来限制组件值 无论您是创建颜色还是询问颜色的组件值 则在链接到 iOS 10 时 您需要更改应用程序的行为 钳位元件值是什么意思 这
  • 无法找到或加载主类 org.gradle.wrapper.GradleWrapperMain

    我通过删除本地目录来清理整个项目 例如 gradle m2 android and workspace project gradle并选择File gt Invalidate Caches Restart 在 Android Studio
  • 地理编码 API 超出速率限制

    我正在使用地理编码 API 来查询一组 10 万用户的位置坐标 但是 由于速率限制 我每天无法触发超过 2500 个请求 为了我的学习目的 我需要不受限制的访问 这是我大学的一个项目 有人可以引导我走向正确的方向吗 Per the 使用限制
  • 非委托类型的事件

    我已经实现了一个类似于此接口的类 ImmutableObject true public interface ICustomEvent void Invoke object sender EventArgs e ICustomEvent C
  • 增加 C/C++ 程序使用的(非堆栈)内存

    我正在具有 12 GB RAM 的 Windows 操作系统上运行内存密集型作业 根据我的计算 4 GB 内存应该足以运行该程序 我正在运行我用动态内存分配编写的程序 我有两个版本的 C 和 C 程序 malloc free and new
  • python参数类型提示支持嵌套类型信息吗?

    我有一个逻辑如下的函数 def computeProbability x i np array np int32 colProbabilities list dict string np float32 gt list double ret
  • AngularJs图像上传到S3

    I am 创建网络应用程序 带有 ng 文件上传功能的 AngularJS 前端 https github com danialfarid ng file upload Node js 后端 希望能够将图像上传到我的 Amazon S3 存
  • 如何在 Firefox 中打印 Iframe PDF?

    是的 我也看到了与此相关的其他问题 但它们没有帮助我 所以这是我的代码 raspe4atat click function ajax url raspe4atat type GET success function ajax url ifr
  • “R”包“ranger”中的“最大深度”相当于什么?

    其他随机森林工具具有限制特定分支上的最大分割深度的 刻度盘 例如 h2o randomForest 具有 max 深度 游侠 的版本是什么 我不熟悉h2o randomForest包 但我对随机森林的一般理解是 每棵树都会生长 直到树的每片
  • 通过套接字发送文件

    我在将数据作为文件从套接字的一端发送到另一端时遇到问题 发生的情况是服务器和客户端都试图读取该文件 因此该文件永远不会被发送 我想知道如何让客户端阻塞 直到服务器完成读取客户端发送的文件 我使用发送和接收来处理原始数据包 但我认为这是一个更
  • 如何在 urlparse 中用新值替换查询?

    所以我有一个数据如下 item s780 scene7 com is image forever 301596014 001 hei 98 wid 98 使用 urlparse 模块 我怎样才能用新的大小替换上面的数据 使其看起来像这样 i
  • python groupby和列表交互

    如果我们运行以下代码 from itertools import groupby s 1223 r groupby s x list r a list g for k g in r print a b list g for k g in g
  • ggplot2 Facet Wrap 按 y 轴而不是 x 轴重新排序

    我想绘制多面条形图 并从左到右从最大到最小值对它们进行排序 我应该能够使用与此类似的代码来做到这一点 library ggplot2 ggplot mpg aes reorder cyl hwy hwy geom col facet wra