绘图中的堆积条形图:如何控制每个堆栈中条形的顺序

2024-01-11

我正在尝试以绘图方式订购堆积条形图,但它不尊重我在数据框中传递它的顺序。

最好使用一些模拟数据来显示:

library(dplyr)
library(plotly)
cars <- sapply(strsplit(rownames(mtcars), split = " "), "[", i = 1)
dat <- mtcars
dat <- cbind(dat, cars, stringsAsFactors = FALSE)
dat <- dat %>% 
         mutate(carb = factor(carb)) %>%
         distinct(cars, carb) %>% 
         select(cars, carb, mpg) %>% 
         arrange(carb, desc(mpg))
plot_ly(dat) %>% 
  add_trace(data = dat, type = "bar", x = carb, y = mpg, color = cars) %>%  
  layout(barmode = "stack") 

生成的图不尊重顺序,我希望将具有最大 mpg 的汽车堆叠在每个气缸组的底部。有任何想法吗?


正如已经指出的here https://stackoverflow.com/a/37825559/2761575,该问题是由于用于颜色分组的列中存在重复值而引起的(在此示例中,cars)。如前所述,可以通过按一列唯一名称对颜色进行分组来纠正条形的顺序。然而,这样做会产生一些不良的副作用:

  1. 同一制造商的不同型号汽车将显示为不同的颜色(不是您想要的 - 您想要按制造商着色)
  2. 图例中的条目比您想要的要多,即每个汽车型号一个,而不是每个制造商一个。

我们可以通过a)从永远不会显示的虚拟跟踪创建图例来解决这个问题(add_trace(type = "bar", x = 0, y = 0...在下面的代码中),以及b)使用手动设置每个类别的颜色colors=争论。下面我用一个彩虹调色板来展示原理。您可能想自己选择一些更有吸引力的颜色。

dat$unique.car <- make.unique(as.character(dat$cars))
dat2 <- data.frame(cars=levels(as.factor(dat$cars)),color=rainbow(nlevels(as.factor(dat$cars))))
dat2[] <- lapply(dat2, as.character)
dat$color <- dat2$color[match(dat$cars,dat2$cars)]

plot_ly() %>% 
  add_trace(data=dat2, type = "bar", x = 0, y = 0, color = cars, colors=color, showlegend=T) %>%  
  add_trace(data=dat, type = "bar", x = carb, y = mpg, color = unique.car, colors=color, showlegend=F, marker=list(line=list(color="black", width=1))) %>%  
  layout(barmode = "stack", xaxis = list(range=c(0.4,8.5))) 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绘图中的堆积条形图:如何控制每个堆栈中条形的顺序 的相关文章

  • 安装 gplots 时出错

    我正在 OSX v 10 9 2 上运行 R v 3 0 3 当尝试使用以下命令在 R studio 中安装 gplots 包时 出现错误 gt library gplots Error in library gplots there is
  • 引导网格中的绘图图周围有巨大的空白

    我有一个 Net 应用程序 我试图在其中使用创建一个图表bootstrap js and plotly js 当我创建响应式图表时 我遇到网格中存在巨大空白的问题 我发现问题的一部分是plotly svg container的大小默认高度为
  • 为什么在 data.frame 中预先指定类型会比较慢?

    我预先分配了一个大 data frame 以便稍后填写 我通常这样做NA是这样的 n lt 1e6 a lt data frame c1 1 n c2 NA c3 NA 我想知道如果我预先指定数据类型是否会让事情变得更快 所以我测试了 f1
  • 使用 ggplot 添加到投影地图时 R 饼图扭曲

    我想使用 ggplot 将饼图绘制到投影地图上 然而 饼图可能由于投影而变得扭曲 有谁知道如何在不变形的情况下绘制饼图 示例代码如下 谢谢 lib c ggplot2 scatterpie lapply lib library charac
  • 收集四列,其中两个键中包含值

    已经提出了类似的问题 但它们都涉及在一个关键列中收集多个列 我需要两个键中的多个列 这是我的数据框 ID measure A 1 measure A 2 measure B 1 measure B 2 1 8 25 23 5 4 5 2 8
  • R 中 nlme 包中的 gls 函数出错

    我不断收到这样的错误 Error in coef lt corARMA tmp value c 18 3113452983211 1 56626248550284 Coefficient matrix not invertible 或者像这
  • 如何从R中串扰的filter_select中删除(全部)?

    我遵循图 16 7 的示例https plotly r com client side linking html https plotly r com client side linking html并且无法弄清楚为什么有一个名为 全部 的
  • R 带有列和行的分面 qqplots

    我需要使用按行和列的构面创建 qqplot 我了解如何用列和行绘制分面图 但我不确定如何设置我的数据 最终 我想按列和行对数据集进行分组 然后按升序对 建模 结果和 观察到 结果进行排序 同时添加带有 行 组的列和带有 列 组的列 我一直在
  • 将文件夹中的多个 csv 文件读取到 R 中的单个数据帧中[重复]

    这个问题在这里已经有答案了 我有一个包含 332 个 csv 文件的文件夹 文件名称如下 001 csv 002 csv 003 csv 330 csv 331 csv 332 csv 所有文件都具有相同数量的变量和相同的格式 我需要读取一
  • R中无法连接odbc数据库

    我一直在尝试使用以下命令将我公司的 DMS 连接到 RodbcConnect命令 但收到以下消息 myConn lt odbcConnect NZSQL uid cejacobson pwd password Warning message
  • ggsubplot 是否适用于 R 3.2.1+?

    CRAN 提供的 ggsubplot 版本与 R 的最新版本 例如 3 1 1 不兼容 运行 ggsubplot 示例会返回以下错误 Error in layout base data vars drop drop At least one
  • 更新两组单选按钮 - 闪亮

    我问了这个问题 反应式更新两组单选按钮 闪亮 https stackoverflow com questions 35040579 update two sets of radiobuttons reactively shiny 昨天 但也
  • 如何在R中将英尺转换为厘米?

    我得到了一个高度的字符向量 如下所示 859 5 10 5 8 5 11 6 0 5 10 6 2 5 11 6 2 6 2 5 7 5 9 5 7 6 1 6 0 5 11 6 0 6 5 6 1 6 1 5 10 5 11 5 11 6
  • 如何将数据从长格式重塑为宽格式

    我在重新排列以下数据框时遇到问题 set seed 45 dat1 lt data frame name rep c firstName secondName each 4 numbers rep 1 4 2 value rnorm 8 d
  • 分布式1.21.8需要msgpack,未安装

    我在尝试安装情节时遇到问题 我继续在 Debian 9 上使用命令行升级 anaconda 并收到错误消息 distributed 1 21 0 需要 msgpack 未安装 然后我尝试了一个conda install mspack 那么一
  • 如何创建 highcharter 事件函数以在 Shiny R 中创建“下拉函数”

    我正在建造一个shiny应用程序 我想要完成的事情之一是创建一个下拉菜单 我想将劳动力变量绘制为不同级别的年份变量的函数 请参阅下面的示例数据框 year level 2 level 3 labour 1 2013 10 101 1 2 2
  • R 3.5 - read.csv 无法读取 UTF-16 csv 文件

    我的代码如下 read csv http asic gov au Reports YTD 2018 RR20180420 001 SSDailyYTD csv skip 1 fileEncoding UTF 16 sep t header
  • 如何对范围内的行进行分组并考虑第三列?

    我有一个遗传数据集 我想对基因组中物理上靠近的遗传变异 行进行分组 我想对每条染色体基因组中某些点范围内的基因进行分组 chrom 我的 点 数据集包含变体 行需要在一定范围内的位置 如下所示 chrom low high 1 500 17
  • 如果值大于或小于,则替换数据框中的值

    我在 R 中操作数据帧时遇到问题 这是 R 中的基本内容 但我找不到执行此类操作的最佳命令 虚拟示例 Var1 20 300 39 Var2 49 23 91 Var3 0 239 210 我怎样才能用10如果值小于 则在第 2 列中10
  • ggplot 按因子和梯度颜色

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

随机推荐

  • Pip 在 Windows 7 中挂起

    I have Python 2 7 10在 Windows 7 上使用 pip 安装 当我尝试安装软件包甚至只是运行时pip在没有选项的cmd中 它堆叠 不打印任何内容 甚至ctrl c也不起作用 我必须关闭cmd 任务管理器显示3个正在运
  • CESS_ESP 标签的定义

    我正在使用NLTK http www nltk org CESS ESP 数据包 我已经能够使用适应 的意大利面标记器 https code google com p spaghetti tagger and a HiddenMarkovM
  • 通过管道发送到 AWS SES 地址的电子邮件到 EC2 上的 PHP 脚本

    我们在 Amazon SES 上设置了一个域 我需要将传入的电子邮件通过管道传输到 EC2 实例上的 PHP 脚本中的特定地址进行处理 我已经在 Cpanel 的共享服务器上使用转发器完成了此操作 opt alt php56 usr bin
  • 使用同一个类的函数在类内创建线程

    我希望能够定义一个包含一些数据成员的类 以及一个可以访问这些数据成员的函数 这些数据成员是私有的 然后我想要一个公共函数 它创建一些线程 这些线程对类的数据成员进行操作 我在编译代码时遇到一些问题 不要担心互斥体或数据保护 这不会成为问题
  • R 读取 zip 数据文件而不解压缩它

    我有一个非常大的 zip 文件 我试图将其读入 R 而不像这样解压缩 temp lt tempfile Sales fileext c zip data lt read table unz temp Sales dat nrows 10 h
  • Typemock Isolator:模拟未注入的依赖项?

    My WidgetDoer类取决于Foo 未注入 我需要假装 foo的实施DoStuffWith 然后验证Do 返回结果 这是我的真实代码的简化表示 public class WidgetDoer readonly Foo foo publ
  • 淡入、淡出、淡入

    是什么不同之处之间fadeIn vs fadeOut vs fadeTo fadeIn http api jquery com fadeIn 从元素当前的不透明度渐变到 1 fadeOut http api jquery com fadeO
  • http 和 https 的本地存储相同吗?

    我正在寻找一种方法来为两者使用相同的 localStorage 或类似的 http example com and https example com 根据this https developer mozilla org En DOM St
  • 获取最顶层的UIViewController

    如果我在UINavigationController 我怎样才能找出最上面的是什么UIViewController 或者就我而言 我想知道是否某个UITableViewController是不是最上面的 我尝试使用 self navigat
  • 如何在两个(或多个)XAML 文件之间共享 VisualStateManager?

    我们正在编写一个基于 Prism 的 Silverlight 应用程序 并且我们在单独的模块中拥有一大堆页面 页面之间的转换是通过导航事件处理的 每个模块都实现了以下方法 以在导航到页面时显示页面并在导航自页面时隐藏页面 public vo
  • OSM - 使用自定义图标显示当前位置

    谁能告诉我如何使用自定义图标在 OSM 地图上显示我当前的位置 使用默认人物图标 MyLocationNewOverlay myLocationoverlay new MyLocationNewOverlay mapView myLocat
  • 如何将导航后退按钮更改为图像?

    所以我有这些用于自定义导航栏和项目的图像 它们看起来像这样 目前我设置了自定义导航栏 但是我不知道如何将默认的 后退 按钮更改为后退按钮图像下面 这就是我想知道的 任何帮助将不胜感激 注意 我正在使用故事板 谢谢 这是导航栏 这是我的后退按
  • SQL 将第二个表中的行计数添加到主查询

    我正在尝试改进一个 不是那么多 简单的查询 我需要检索表 A 中的每一行 然后将表 A 与表 B 连接起来 这样我就可以获得所需的所有数据 同时 我需要添加一个额外的列 其中包含表 C 中的 count 就像是 SELECT a SELEC
  • 服务不会处理消息

    我创建了一个使用 Windows 消息系统的 Windows 服务 当我从调试器测试应用程序时 消息顺利通过 但是当我安装它时 我的消息 14 分钟前询问 弗拉基米尔 1图加 服务通常不接收窗口消息 他们根本不一定有窗把手 即使它们这样做
  • 为什么此 C 代码会出现分段错误?

    这段代码给了我一个分段错误 char s1 String 1 s2 String 2 void swap char char int main void swap s1 s2 return 0 void swap char p char q
  • 使用index.ts文件导出类会导致注入的构造函数中未定义

    我使用 index ts 文件来封装导出 如 Angular 2 风格指南中所述 https github com mgechev angular2 style guide blob master old README md directo
  • 如何检查 System.IO.File.Delete 是否成功删除文件

    使用 system io file 类删除文件后 System IO File Delete openedPdfs path 如果文件已成功删除 我需要运行一些代码 只要该方法不返回任何值 我就会在删除方法之后检查文件是否存在 如果它仍然存
  • PHP docBlock @return 类名

    如何创建一个声明 return 的 PHP DocBlock 该 return 声明类的返回 目前这很简单 This returns an object of the User class return User public functi
  • Grails - 按查询中的两个字段排序

    我的项目中有这样一个域类 class Log Integer entityId Integer tableId Date logDt 我想通过某个tableId选择所有记录 并按entityId排序and林德描述 按一个字段排序效果很好 L
  • 绘图中的堆积条形图:如何控制每个堆栈中条形的顺序

    我正在尝试以绘图方式订购堆积条形图 但它不尊重我在数据框中传递它的顺序 最好使用一些模拟数据来显示 library dplyr library plotly cars lt sapply strsplit rownames mtcars s