如何从 ggplot 对象中提取填充颜色?

2023-12-28

我正在尝试为一系列生成的函数编写一些自动化单元测试ggplot图形。

例如,我想为绘图设置特定的色标。现在我需要一种方法来确定是否实际应用了正确的色阶。

的背景:

这是一些示例代码,用于设置fill使用 Color Brewer 调色板的颜色Dark2:

p <- ggplot(mtcars, aes(x=factor(cyl), y=mpg, fill=factor(gear))) + 
  geom_bar(stat="identity") + 
  facet_grid(~gear) +
  scale_fill_brewer(palette="Dark2")

print(p)

好的,目视检查告诉我代码有效。

我尝试过的:

现在我想通过检查对象来确认这一点:

str(p, max.level=1)
List of 8
 $ data       :'data.frame':    32 obs. of  11 variables:
 $ layers     :List of 1
 $ scales     :Reference class 'Scales' [package "ggplot2"] with 1 fields
  ..and 20 methods, of which 9 are possibly relevant
 $ mapping    :List of 3
 $ options    :List of 1
 $ coordinates:List of 1
  ..- attr(*, "class")= chr [1:2] "cartesian" "coord"
 $ facet      :List of 9
  ..- attr(*, "class")= chr [1:2] "grid" "facet"
 $ plot_env   :<environment: R_GlobalEnv> 
 - attr(*, "class")= chr "ggplot"

很好,$scales对象看起来很有趣。让我们更详细地看一下:

str(p$scales)
Reference class 'Scales' [package "ggplot2"] with 1 fields
 $ scales:List of 1
  ..$ :List of 14
  .. ..$ call      : language discrete_scale(aesthetics = "fill", scale_name = "brewer", palette = brewer_pal(type, palette))
  .. ..$ aesthetics: chr "fill"
  .. ..$ scale_name: chr "brewer"
  .. ..$ palette   :function (n)  
  .. ..$ range     :Reference class 'DiscreteRange' [package "scales"] with 1 fields
  .. .. ..$ range: NULL
  .. .. ..and 14 methods, of which 3 are possibly relevant:
  .. .. ..  initialize, reset, train
  .. ..$ limits    : NULL
  .. ..$ na.value  : logi NA
  .. ..$ expand    : list()
  .. .. ..- attr(*, "class")= chr "waiver"
  .. ..$ name      : NULL
  .. ..$ breaks    : list()
  .. .. ..- attr(*, "class")= chr "waiver"
  .. ..$ labels    : list()
  .. .. ..- attr(*, "class")= chr "waiver"
  .. ..$ legend    : NULL
  .. ..$ drop      : logi TRUE
  .. ..$ guide     : chr "legend"
  .. ..- attr(*, "class")= chr [1:3] "brewer" "discrete" "scale"
 and 20 methods, of which 9 are possibly relevant:
   add, clone, find, get_scales, has_scale, initialize, input, n, non_position_scales

但我在这里画了一个空白。里面什么也没有p$scales这看起来像是我的输入palette,或者实际上喜欢颜色。

我期望找到什么:

我期望的颜色是:

library(RColorBrewer)
brewer.pal(3, name="Dark2")
[1] "#1B9E77" "#D95F02" "#7570B3"

问题:

我如何询问一个ggplot要使用的特定填充颜色的对象?


尝试构建情节,

g <- ggplot_build(p)
unique(g$data[[1]]["fill"])

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

如何从 ggplot 对象中提取填充颜色? 的相关文章

  • R:错误消息---包错误:“functionName”未从当前命名空间解析

    我正在使用一个一直运行到 R3 0 的软件包 问题如上所述 当我们调用在 R 2 15 2 中工作的函数时 从 R 3 0 开始我们得到一个错误 Error in C solarspectrum3 as double lon as doub
  • 根据值的运行总计创建组

    我的数据在一个变量 Y 上是唯一的 另一个变量 Z 告诉我每个 Y 中有多少人 我的问题是我想从这些 Y 和 Z 创建 45 人的组 我的意思是 每当运行总计Z 达到 45 创建一组 然后代码继续创建下一组 我的数据看起来像这样 ID X
  • 如何从 data.frame 中选择行和列的子集

    我有这个 d d Age gt 2 它返回 Age 超过 2 的所有行 但我只想返回几列中的值 例如 d X 和 d Y 而不是全部 无论如何我可以做到这一点吗 Thanks d d Age gt 2 c X Y
  • Quarto/Rmarkdown 中的美人鱼图:狭窄且模糊

    我正在尝试生成 pdf 格式的四开文档 稍后会生成 word 格式 我遇到了美人鱼图的问题 请在下面找到一个示例 qmd 文件来说明该问题 所以首先它应该支持 mermaid 标签 但当我这样做时 我无法在 rstudio 中 运行 单元
  • R - 根据另一个数据框查找每组的重叠日期

    我有一个数据框 其中包含多个雨量计的降雨测量值 如下例所示 gt rnfl ID date value 1 250 2000 03 01 5 37 2 250 2000 03 02 0 00 3 250 2000 03 03 2 94 4
  • 正则表达式挑选括号之间的一些文本[重复]

    这个问题在这里已经有答案了 可能的重复 提取 R 中所有括号内的信息 正则表达式 https stackoverflow com questions 8613237 extract info inside all parenthesis i
  • 使用 ggplotly(ggplot2 withplotly)时可以去掉注释中的跟踪标签吗?

    使用ggplotly时是否可以删除注释中的跟踪标签 例如 library ggplot2 library plotly g lt ggplot iris aes Sepal Width Sepal Length geom point ann
  • 如何判断某个软件包是否已经安装?

    当我安装 yaml 包时 如果之前已经安装过 RStudio 则会弹出一条烦人的错误消息 如何判断该软件包是否已安装 以便我可以在代码中决定是否安装该软件包 该消息位于弹出窗口中 内容如下 此安装将更新的一个或多个软件包 当前已加载 在更新
  • mclapply 用户时间大于已用时间

    我正在尝试使用mclapply的功能parallel封装在R 该函数通过计算对数似然距离将值分配给序列矩阵 这是一个 CPU 密集型操作 所结果的system time价值观令人困惑 gt system time mclapply work
  • 通过 RSelenium 单击按钮

    我正在尝试使用 Rselarium 和 Rvest 来抓取 REI 的评论 吊床 我想点击底部的按钮 x 次 这样我就可以抓取所有评论 我有点失落 这是我到目前为止所拥有的 如果您也知道如何在取景器中预览您正在做的事情 而不是屏幕打印 那就
  • R 条形图中的 X 轴

    我想问一个关于 barplot 轴的问题 首先请看我的数据 SerNo DOY Rain 1 350 0 2 351 0 3 352 0 4 353 0 5 354 0 6 355 0 7 356 0 8 357 0 9 358 0 10
  • 为什么我在 ddply 中看到“错误:length(rows) == 1 is not TRUE”?

    我有一个数据框 比如工资单 例如 payroll lt read table text AgencyName Rate PayBasis Status NumRate HousingAuthority 26 843 00 Annual Fu
  • 无法在 Powershell 中运行 R.exe

    我经常发现在命令行 Windows 上运行 R 更有用 然而 当我在 Powershell 中尝试时 我往往会遇到问题 但这可以通过第一次运行轻松克服cmd然后就可以了 这是我执行此操作时遇到的错误R CMD BATCH Invoke Hi
  • 创建序列组合

    我正在尝试解决以下问题 考虑 5 个简单序列 0 100 100 0 rep 0 101 rep 50 101 rep 100 101 我需要 3 个数字变量的集合 它们的所有组合都具有上述序列 由于有 5 个序列和 3 个变量 因此可以有
  • for 循环与 cor.test 在许多类别上

    我正在尝试在 R 中编写一个循环 它将循环遍历 3 个不同的物种 以计算两个连续变量 Redness 和 VarNormAbund 之间的相关性 我的循环正在运行 但 3 个物种中每一个的输出都是相同的 这让我认为循环卡在第一个物种上 co
  • 使用 dplyr 的 select 引用变量名[重复]

    这个问题在这里已经有答案了 通常我会想要选择变量的子集 其中该子集是函数的结果 在这个简单的例子中 我首先获取与宽度特征相关的所有变量名称 library dplyr library magrittr data iris width var
  • 将 csv 文件上传到shinyApps.io

    我的应用程序在本地运行良好 并且我能够成功地将应用程序部署到shinyapps io 服务器 但是当我尝试使用shinyapps URL 在浏览器中加载应用程序时 收到以下错误消息 错误对象 数据 不是成立 我认为这是因为 data 变量从
  • 绘制带有颜色渐变的geom_segment线? (或者还有另一种方法来强调开始与结束吗?)

    我的数据框中有大量行 100 000 的两组纬度和经度变量 我正在尝试绘制一个连接这两组坐标的图 即 从纬度1 经度1 to 纬度2 经度2 使用 geom segment 使用非常低的 alpha 使线条透明 因为线条太多 我想强调这些线
  • 替换rmarkdown/knitr/pdf中字幕的自动编号

    我正在使用 Rmarkdown 生成 PDF 文档 我想在其中手动定义图号 下面是一个块的示例 r chunk26 fig cap Fig 5 3 My figure caption plot 1 1 我使用特殊的编号来遵循文档的章节 问题
  • 通过 r 中的组变量进行汇总

    我有一个数据框如下 head newStormObject FATALITIES INJURIES PROPVALDMG CROPVALDMG EVTYPE total 1 0 15 2 5e 05 0 TORNADO 15 2 0 0 2

随机推荐

  • 显示对象而不是字符串

    在这里 我附上了我的问题的快照和代码 它只向我显示作为对象的内容 但完美地显示组名 这个问题的快照在下面的链接中给出 只需浏览这张图片 http imageupload org d 4DA941521 快照 gt 我想要特定组名称的子数据
  • 使用 kafka 进行 Spark 结构化流处理只会导致一批(Pyspark)

    我有以下代码 我想知道为什么它只生成一批 df spark readStream format kafka option kafka bootstrap servers IP option subscribe Topic option st
  • 如何设计一个数据库来存储属性,通过同义词选择属性

    我正在为房地产应用程序设计一个数据库 事实证明 它比我预期的更复杂 也许我把事情复杂化了 这些问题本质上是由于以下因素的存在造成的 同义词 例如 术语 公寓 公寓和顶层公寓本质上都指的是同一类型的房产 属性 不同的属性类型有不同的属性 例如
  • 批处理:连接变量和字符串以形成输出路径

    我有一个批处理文件 用户在其中输入文件的路径 然后从该路径中提取文件名 我使用该文件名创建一个同名的文件夹 在该文件夹中 我想创建一个 log txt 文件 我在批处理文件中调用的进程可以将其日志消息写入其中 这是代码 set p path
  • 将数据框与从应用函数创建的另一个数据框合并?

    我有一个数据框 df 工资数据 State Annual Salary New York 132826 New Hampshire 128704 California 127388 Vermont 121599 Idaho 120011 还
  • 在 C# 中访问已释放的闭包?

    我正在调查 Microsoft 企业库 数据应用程序块 示例 sln 他们有一个异步读取数据的示例 IAsync 虽然新版本 6 也支持async 但是雷沙珀 或视觉工作室 没关系 向我展示 访问已处理的闭包 首先我将显示图像 这样会更清晰
  • 从一个位置移动到另一个位置后 UIButton 框架发生变化

    我有 1UIButton in StoryBoard就像下面的屏幕一样 我移动UIButton按照此从一个位置到另一个位置Answer https stackoverflow com questions 45392104 drag uibu
  • NetBeans 远程连接

    我正在尝试设置 netBeans 远程项目 但遇到了很多麻烦 我已经从远程服务器启动了一个 PHP 应用程序 在最后一个确认步骤中它向我抛出了错误 没有可供下载的文件 尝试在远程配置中检查被动模式 在日志输出中 它失败了 gt 215 UN
  • Facelets ui:remove 标签的实际意义

    我想了解基本机制
  • Maven 原型不使用属性来创建模块名称

    我创建了一个原型 您可以在其中设置 moduleName 或期望 使用 必需的属性 moduleName 这里是原型元数据 xml 减少 我也尝试过类似的结果
  • 数据库中的闰秒处理

    As The Unix time number is zero at the Unix epoch and increases by exactly 86400 per day since the epoch So it cannot re
  • DTD 是否已被弃用?

    In XML 模式和 DTD 有什么区别 https stackoverflow com questions 1544200 what is difference between xml schema and dtd 两个回答者表示 DTD
  • Angular Js HTML5 模式不起作用 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在尝试将 HTML5 模式添加到我的 Angular 应用程序中以删除 符号 问题是它根本行不通 我的整个 ng view 将
  • Maven:在战争构建的资源文件夹中包含文件夹

    我在 src main resource 中有一个名为 extra jars 的文件夹 但如何将它们包含在构建中 我希望它们与其余的 jar 一起放入 lib 文件夹中 我尝试将它们包括在内 但这没有用 对于不是由 Maven 存储库分发的
  • 消息:配置的数据库连接是持久的。正在中止

    Codeigniter 2 到 3 版本升级后 出现此错误 为什么会这样呢 遇到未捕获的异常 类型 异常 消息 配置的数据库连接是持久的 正在流产 文件名 var www vhosts xxx com app system librarie
  • R代码gmapsdistance

    我有以下代码用于查找两个位置之间的旅行时间 我使用 vba 调用脚本 这就是命令 args 显示在顶部的原因 但出于测试目的 我只是设置变量 这一直有效到今天 没有改变任何东西 现在一旦我运行结果行 我就不断收到此错误 Error in r
  • Numpy 在矩阵上按百分比分割

    我在理解以下编码时遇到问题 并且我是 python 新手 data a data b data C np split original data sample frac 1 random state 1729 int 0 7 len ori
  • 内部查询是否可以?

    我经常看到类似的东西 SELECT events id events begin on events name FROM events WHERE events user id IN SELECT contacts user id FROM
  • 不幸的是,应用程序在检查网络时停止了

    我正在使用以下代码来检查网络连接通过我的应用程序 public class ConnectionChangeReceiver extends BroadcastReceiver Override public void onReceive
  • 如何从 ggplot 对象中提取填充颜色?

    我正在尝试为一系列生成的函数编写一些自动化单元测试ggplot图形 例如 我想为绘图设置特定的色标 现在我需要一种方法来确定是否实际应用了正确的色阶 的背景 这是一些示例代码 用于设置fill使用 Color Brewer 调色板的颜色Da