如何从 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 对象中提取填充颜色? 的相关文章

随机推荐

  • 显示对象而不是字符串

    在这里 我附上了我的问题的快照和代码 它只向我显示作为对象的内容 但完美地显示组名 这个问题的快照在下面的链接中给出 只需浏览这张图片 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