使用 ggplotly() 时反转图例顺序

2023-12-13

我想反转水平条形图图例的顺序。添加时guides(fill = guide_legend(reverse = TRUE)) to the ggplot它工作正常(参见第二个图)。然而申请后ggplotly()图例再次采用默认顺序。

如何颠倒顺序plotly legend without改变条形的顺序?

library(ggplot2)
library(dplyr)
data(mtcars)

p1 <- mtcars %>%
  count(cyl, am) %>%
  mutate(cyl = factor(cyl), am = factor(am)) %>%
  ggplot(aes(cyl, n, fill = am)) +
  geom_col(position = "dodge") +
  coord_flip()
p1


p2 <- p1 + guides(fill = guide_legend(reverse = TRUE))
p2

plotly::ggplotly(p2)

enter image description here


添加@Zac Garland 的精彩答案是一个适用于任意长度图例的解决方案:

library(ggplot2)
library(dplyr)

reverse_legend_labels <- function(plotly_plot) {
  n_labels <- length(plotly_plot$x$data)
  plotly_plot$x$data[1:n_labels] <- plotly_plot$x$data[n_labels:1]
  plotly_plot
}

p1 <- mtcars %>%
  count(cyl, am) %>%
  mutate(cyl = factor(cyl), am = factor(am)) %>%
  ggplot(aes(cyl, n, fill = am)) +
  geom_col(position = "dodge") +
  coord_flip()

p2 <- mtcars %>%
  count(am, cyl) %>%
  mutate(cyl = factor(cyl), am = factor(am)) %>%
  ggplot(aes(am, n, fill = cyl)) +
  geom_col(position = "dodge") +
  coord_flip()
p1 %>%
  plotly::ggplotly() %>%
  reverse_legend_labels()

enter image description here

p2 %>%
  plotly::ggplotly() %>%
  reverse_legend_labels()

enter image description here

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

使用 ggplotly() 时反转图例顺序 的相关文章

  • 将文件名附加到 R 中的数据框

    我想将文件名附加到我的表中 但它似乎并没有真正起作用 我正在做的是迭代文件名列表 打开它们 将所有数据附加到一个数据帧 对于每个附加文件 我想添加其文件名 我希望将其附加到每一行 以便稍后当我查看数据时 我会知道给定行源自哪个文件 但似乎并
  • tidyverse - 将命名向量转换为 data.frame/tibble 的首选方法

    使用tidyverse我经常面临将命名向量转换为向量的挑战data frame tibble列是向量的名称 执行此操作的首选 tidyverse 方式是什么 编辑 这与 this https github com hadley dplyr
  • ggplot geom_bar - 条形太宽

    对于这个非信息性的标题 我感到很抱歉 gt y read csv textConnection scan sep n what raw org art type length 191 gk Finish short 4 147 ik Att
  • 导入 .sav 时出现警告/错误

    我工作中有两个版本的 SPSS SPSS 11 在 Windows XP 上运行 SPSS 20 在 Linux 上运行 SPSS 的两个副本都工作正常 使用任一版本的 SPSS 创建的文件在其他版本的 SPSS 上打开时不会出现任何问题
  • Linux 中的 R 有哪些可用的 IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 Linux 中的 R 有哪些好的 IDE 我尝试过 Rcmdr 和 Eclipse 但似乎都不具有与 Windows 中的 Tinn R
  • 如何绘制 Voronoi 曲面细分的多边形而不是线段?

    我找到了一种使用 ggplot2 绘制 Voronoi 曲面细分的分段的方法 library deldir library ggplot2 library ggthemes set seed 123 df lt data frame lat
  • ggplot2 的 fortify 函数出错

    我在 ggplot2 中使用 fortify 方法时收到此错误 Error in function classes fdef mtable unable to find an inherited method for function pr
  • 有没有一种简单的方法可以在 R 的 igraph 中按度数对网络节点进行着色?

    使用igraphR 包 我想按度数对网络节点进行着色 颜色应代表渐变 例如从蓝色到红色 或从黄色到红色 从网络中观察到的最低程度到最高程度 我找到了一个可行的解决方案 https stackoverflow com questions 40
  • R 中的卡方拟合优度检验

    我有一个观察值向量 还有一个用模型计算的值向量 actual lt c 1411 439 214 100 62 38 29 64 expected lt c 1425 3 399 5 201 6 116 9 72 2 46 3 30 4 6
  • 使用 lapply、Reduce 和 union 折叠 data.table 中的行

    我有一个 data table 示例 JACcar 它应该使用下面的代码根据 ID 折叠成一行 但是 我不明白为什么它不会折叠少于 2 行 我还尝试通过将列限制为仅包含 NA 以外的值的列来验证我的输出 因为原始数据中有 123 列 有人可
  • 单击 hPlot 图表中闪亮的数据点时打印组名称

    我有一个闪亮的应用程序 它使用 rCharts 中的 highcharts 库显示一些图表 在某些情况下 我在单个图表上有多个图表 这些图表是使用 hPlot 中的组选项创建的 我希望在单击图表时打印单个数据点的所有参数 x y 和组值 我
  • 使用格式表过滤数据框

    样本数据 修改自formattablegithub 文档 df lt data frame id 1 10 name c Bob Ashley James David Jenny Hans Leo John Emily Lee age c
  • 使用 Rgraphviz 中的 pos 参数来固定节点位置

    基于这个问题当弧与另一弧重叠时自动弯曲 https stackoverflow com questions 45721802 automatically curving an arc when it is overlapping with
  • 在 R data.table 中计算时间增量

    我有一个篮球运动员数据的数据表 其中包括每场比赛和多名球员的比赛日期 我想创建一个列来计算自上一场比赛以来的天数 我在 R 中使用 data table 包 PLAYERID GAME DATE 1 2989 2014 01 1 2 298
  • 在 R 中使用 apply() 时出现未使用参数错误

    当我尝试对日期列使用 apply 条件以返回一组系数时 收到错误消息 我有一个数据集 为简单起见 此处进行了修改 但可重现 ADataset lt data table Epoch c 2007 11 15 2007 11 16 2007
  • 如何检查向量是否是单个 NA 值,没有长度警告且没有抑制

    我有一个功能NA作为默认值 但如果没有NA应该是一个不限于大小 1 的字符向量 我有一个检查来验证这些 但是is na当向量是字符向量时产生标准警告length大于1 so function lt function x NA if is n
  • 最新的 Windows 10 更新后 R 将无法运行

    我已经更新了我的 Windows 但 R 无法运行 因此 R studio 也无法运行 当我运行 R GUI 时 它只是冻结并且没有响应 我已允许防火墙豁免铬 我正在使用 Windows Insider 计划并且刚刚更新到 Windows
  • 写入抓取数据的 csv 文件时如何拆分项目名称

    我有兴趣使用 R 从网上抓取的数据创建 csv 或类似的 Excel 兼容文件 到目前为止 我通过执行以下操作来存储数据 require textreadr spiegel lt read html http www spiegel de
  • 获取数据集 R 包中所有对象名称的列表?

    如何获取对象中对象的确切名称列表datasets https stat ethz ch R manual R devel library datasets html 00Index html包裹 我在这里找到了很多 data package
  • R:交换两个变量而不使用第三个变量

    我有两个变量 即 a lt 1 b lt 2 我想交换他们的价值观 是否有任何内置的 R 函数能够执行该操作 或者是否有其他优雅的方式 而不使用第三个 临时 变量 Note 如果可能的话适用于字符串或其他数据类型 有一个通用的解决方案或 技

随机推荐

  • 语音识别 Android 应用程序

    我正在制作一个应用程序 它接受用户的命令并实时写入 我最好的选择是什么 像 sphinx 这样的第三方软件还是应该使用内置的 android 语音识别 其次 我希望它能够实时写入 就像我说话时它就开始写入一样 您应该使用内置的 Androi
  • 函数 simplexml_load_string() 上的 XML_PARSE_HUGE

    常数XML PARSE HUGE可以作为第三个参数传递给simplexml load string 根据php net这个标志 放宽解析器的任何硬编码限制 什么是 解析器的默认硬编码限制 我认为放松也有点含糊 它是否消除或增加了 硬编码限制
  • 按钮中的图像 - j2me

    我正在尝试使用 J2ME 构建一个简单的基于菜单的 GUI 菜单项当前是从 Button 类派生的类的对象 有什么办法我可以 替换按钮中的文本并显示图像 类似图标 使文本和图像并排显示在同一菜单栏上 如果我的问题不清楚 请告诉我 我会编辑它
  • 如何使用 PyEnchant 更正文本并自动返回更正后的文本

    import enchant import wx from enchant checker import SpellChecker from enchant checker wxSpellCheckerDialog import wxSpe
  • 我可以对 byte[] 执行按位运算吗?

    假设我有 byte data new byte 1 212 29 144 我能够弄清楚执行按位 AND 的唯一方法是首先将 byte 转换为 uint if BitConverter ToUInt32 data 0 0x7 1 If the
  • Wpf 数据网格最大行数

    我目前正在使用数据网格 我只想允许用户在将 CanUserAddRows 设置为 false 之前输入最多 20 行数据 我在自己的数据网格上创建了 一个依赖属性 源自原始数据网格 我尝试使用该事件 ItemContainerGenerat
  • Pygame:让物体移动速度慢于 1 [重复]

    这个问题在这里已经有答案了 我制作了一个类似太空入侵者的小游戏 一切都很好 除了我觉得我编程的敌人移动得太快了 如果我将它们的移动速度设置为低于 1 例如 0 5 它们甚至不会移动 有什么办法可以让动作变得更慢吗 这是我的敌方单位的代码 i
  • R CMD 检查和 .RDa 数据文件

    我在 data 子目录下有 RDa 格式的数据文件 但是 R CMD check命令无法识别load test RDa 命令及其在此阶段失败并给出以下错误 Warning in readChar con 5L useBytes TRUE c
  • SDL_DisplayFormat 未在此范围内声明:使用 SDL2

    编译器不会返回丢失的 SDL h 而是返回 SDL DisplayFormat 未在位于不同标头的类成员函数的范围内声明 即使我已在 main 中对其进行了初始化 SDL Surface SpriteLoad Load char File
  • gemice_cube 用于重复事件

    我有简单的事件模型 标题 日期 用户 我按月创建了事件日历 gem watu table builder 我需要创建重复事件的功能 我发现我可以使用 gemice cube 来实现它 但我不清楚 我添加到模型 class Event lt
  • SQL 最后 X 条记录的总和

    我已经找了一段时间 但找不到这个问题的答案 也许我没有搜索正确的术语或其他东西 基本上 我有一个数据库 每个日期有任意数量的条目 我需要计算包含条目的最后 X 天的总和 忽略没有条目的日子 我知道如何找到每天的总和 假设我有一个名为 Yie
  • Mysql 距离内查询

    Options lat 25 7742658 lng 80 1936589 miles 30 Query SELECT 3959 acos cos radians lat cos radians lat cos radians lng ra
  • 在gdb中包含malloc.c的源代码吗?

    我如何包含 查看源代码malloc in gdb 我想一步步执行gdb 并步入malloc c调用任何 malloc 函数时的源代码 目前 gdb 所说的是 malloc c No such file or directory This这里
  • uint8_t 乘以布尔值是什么类型?

    来自standard 我试图了解表达式最终会成为哪种类型 bool myBool uint8 t 255 myBool 我保证吗myBool将被投射到uint8 t 又名unsigned char 或者整个结果可能是int 有用的链接 布尔
  • 为什么 git lfs migrate 不跟踪所有 pdf 文件?

    提前备注 git lfs migrate import include pdf 做的工作是git lfs ls files shows e6521dbea0 large180m pdf 我猜 但我还是不明白发生了什么 我需要使用git lf
  • 谷歌身份验证后,即将到来的网址不允许我在科尔多瓦应用程序中进一步前进

    您好 我正在使用 Visual Studio 2015 社区使用 Cordova 应用程序 只需使用 google 身份验证登录应用程序 通过在新窗口中打开它就可以很好地登录 但登录后它会给我三个弹出消息 而不是执行任何操作 这些消息是 在
  • PHP/Javascript 将消息传递到另一个页面

    那么让我解释一下 我基本上希望当您发表评论时 我使用 js jquery 脚本将字符串发送到 insert php 并插入数据库 您将收到 2 积分 现在我已经完成了 所以你得到了 2分 但我想显示一条像stackoverflow这样的消息
  • Git 子模块:位于子模块文件夹中的文件是否必须由同一子模块跟踪?

    我有 git repo A 包含子模块 B 一些文件file c位于 B 的文件夹内 正如您所期望的 它本身位于 A 的文件夹内 问题 我可以跟踪这个文件吗file c来自 A 而不是来自 B 这有什么意义吗 想法是 B 的任何用户都必须添
  • Disqus 评论表单未显示在自托管 WordPress 网站上

    我已按照在我的网站上安装 Disqus 评论系统的所有说明进行操作 但旧的评论表单仍然可见 我的问题是 是足以显示评论 否则 single php 页面上需要有其他内容 我还应该注意什么 我没有安装任何其他评论引擎 谢谢 好的 我找到了 而
  • 使用 ggplotly() 时反转图例顺序

    我想反转水平条形图图例的顺序 添加时guides fill guide legend reverse TRUE to the ggplot它工作正常 参见第二个图 然而申请后ggplotly 图例再次采用默认顺序 如何颠倒顺序plotly