为 ggplot2 生成亮色和暗色对

2024-01-31

brewer.pal(n=8,name="Paired")

最多可以创建八个颜色对,但其中只有少数颜色适合打印。 有没有更灵活的函数可以生成深色吊坠? 应该是深色的

  • 在黑暗中看起来像相同的颜色
  • 可打印
  • 很容易与亮色区分开来

有没有 colorbrewer 工具可以解决这个问题?

> dark("red")
[1] "FF5555"

我想出了这个函数,但它只能处理单色,不能处理矢量。如果可以“矢量化”,这个函数将是一个很好的解决方案。

setbrightness <- function(rgbcolour, brightness) {
  ## usage: setbrightness(col2rgb("red", 0.2)
  thiscolour <- rgb2hsv(rgbcolour)
  return(hsv(h=thiscolour[1], s=thiscolour[2], v=brightness))
}

这是您可以使用的矢量化函数。这个想法是将 RGB 转换为 HSV,其中 V 对应于亮度,然后再返回 RGB:

library(grDevices)
# Every element of r, g, b must be in [0, 255]
# Every element of conv[[3]] must be in [0, 1], 1 is highest brightness
brightness <- function(r, g, b, factor) {
  conv <- as.list(as.data.frame(t(rgb2hsv(r, g, b))))
  conv[[3]] <- pmin(1, conv[[3]] * factor)
  do.call(hsv, conv)
}

# Reducing brightness by 20%
brightness(55, 100, 150, 0.8)
#[1] "#2C5078"

# Increasing by 20%
brightness(55, 100, 150, 1.2)
#[1] "#4278B4"

brightness(55, 100, 150, c(0.8, 1.2))
#[1] "#2C5078" "#4278B4"

x <- rep(LETTERS[1:2], 5)
qplot(x = x, geom = "bar", fill = x) + 
  scale_fill_manual(values = brightness(55, 100, 150, c(0.5, 1.5)))

See ?rgb2hsv, ?hsv and wiki http://en.wikipedia.org/wiki/HSL_and_HSV更多细节。

Edit:根据您的编辑,您似乎更喜欢使用颜色名称和亮度的直接值。在这种情况下,向量化函数看起来非常相似:

# Usage: brightness("red", c(0.1, 0.3, 0.5, 1))
brightness <- function(rgbcol, v) {
  conv <- as.list(as.data.frame(t(rgb2hsv(col2rgb(rgbcol)))))
  conv[[3]] <- v
  do.call(hsv, conv)
}

set.seed(19)
df <- data.frame(a = rlnorm(100), b = 1:10, c = rep(LETTERS[1:10], each = 10))
ggplot(df, aes(x = b, y = a, fill = c)) + geom_area() + theme_bw() +
  scale_fill_manual(values = brightness("red", seq(0.1, 0.7, length = 10)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 ggplot2 生成亮色和暗色对 的相关文章

  • 从 data.frame 在 ggplot 图例中添加信息

    我想在图例中添加信息 哪个传感器具有该值 这是我的代码 z lt data frame a c sensor 1 sensor 2 sensor 3 sensor 4 sensor 5 sensor 6 sensor 7 sensor 8
  • 如何声明包含 M 个元素的列表对象

    我想声明一个包含 M 3 x 3 矩阵的列表 如果我事先知道数字 M 那么我可以通过以下方式声明这样的列表 elm lt matrix NA 3 3 Say M 7 myList lt list elm elm elm elm elm el
  • 如何按定义的顺序将图像合并到一个文件中

    我有大约 100 张图像 png 我不想手动执行此操作 而是希望将它们按照定义的顺序 基于文件名 并排放置在一个 pdf 中 每行 12 个图像 有人有什么建议吗 我按照下面托马斯告诉我的方法尝试了 它把它们贴在旁边有一个黑边 我怎样才能去
  • data.table 抛出“找不到对象”错误[重复]

    这个问题在这里已经有答案了 我有一个数据表 library data table mydt lt data table index 1 10 当我在全局环境中尝试它时 我可以让它工作 但当我在调试器中或在包测试中使用它时却无法工作 问题是我
  • 在ggplot中设置y轴中断

    我在代码中设置中断时遇到困难 我尝试添加breaks seq 0 100 by 20 但似乎无法让它正常工作 本质上我希望 Y 轴从 0 到 100 每 20 个刻度一次 YearlyCI lt read table header T te
  • R中IF函数的使用

    我正在短跑ifR 中的函数 但收到以下警告消息 In if runif 50 0 1 lt 0 69 the condition has length gt 1 and only the first element will be used
  • 要在子集中显示的非数字条目的维恩图

    我有以下数据框 SET1 SET2 SET3 par1 par2 par1 par2 par3 par2 par3 par4 par5 我想制作一个维恩图 其中所有这些 parX 元素都显示在各自的子集中 即作为标签 而不仅仅是重叠元素的数
  • 如何为自定义 S3 类实现提取/取子集 ([ [<-, [[ [[<-)] 函数?

    我有一个自定义的 S3 类foo 它在正常的基础上添加了一些自定义行为data frame foo object lt data frame class foo object lt c foo data frame 对于这个类 还应该有一个
  • 返回条件格式化单元格内部颜色的函数

    我想要一个返回条件格式单元格颜色索引值的函数 它用于检查一行中的多个单元格 如果它们使用条件格式突出显示 则需要执行操作 检查单元格中是否有颜色比创建覆盖条件的组合条件公式更简单所有细胞的 或者说我是这么想的 尽管代码在消息框中有效 但下面
  • R:单纯形错误:在下标赋值中不允许使用 NA

    对于以下具有目标函数和约束的最小化 boot simplex返回错误 Error in tab pr lt tab pr tab pr pc pv o tab pr NAs are not allowed in subscripted as
  • R - 基于列名称的子集

    我的数据框有超过 120 列 变量 我想根据列名称创建子集 例如 我想创建一个子集 其中列名称包含字符串 心情 这可能吗 我一般用 SubData lt myData grep whatIWant colnames myData 我很清楚
  • 如何将参数从 Excel/VBA 传递到 Rstudio 中的脚本

    我正在尝试使用 Rstudio 从 VBA 打开 R 脚本 同时将参数传递给 R 脚本 然后我可以使用 commandArgs 访问该脚本 该问题与此处描述的问题非常相似 WScript Shell 用于运行路径中包含空格且来自 VBA 的
  • 获取包含矩阵行内最大值的列名称,该矩阵在数组内包含单独的最大值

    例如给出 dim1 lt c P PO C T dim2 lt c LL RR R Y dim3 lt c Jerry1 Jerry2 Jerry3 Q lt array 1 48 c 4 4 3 dimnames list dim1 di
  • R 数据结构的运算效率

    我想知道是否有任何关于操作效率的文档R 特别是那些与数据操作相关的 例如 我认为向数据框添加列是有效的 因为我猜您只是向链接列表添加一个元素 我想添加行会更慢 因为向量保存在数组中C level你必须分配一个新的长度数组n 1并将所有元素复
  • 将整个包传递给雪簇

    我正在尝试并行化 使用snow parLapply 一些依赖于包 即除snow 调用函数中引用的对象parLapply必须使用显式传递给集群clusterExport 有没有办法将整个包传递到集群 而不必显式命名每个函数 包括用户函数调用的
  • 在 RGL 中将立方体绘制到 3D 散点图中

    我正在尝试向 3D 散点图添加较小的立方体 网格 具有指定边长 我希望立方体位于原点 我该怎么做呢 我已经玩过cube3d 但我似乎无法将立方体正确定位 也无法使其成为网格 因此我可以看到它包含的数据点 这是我所拥有的 library rg
  • 在闪亮的数据表中为每个单元格显示工具提示或弹出窗口?

    有没有什么方法可以为 r闪亮数据表中的每个单元格获取工具提示 有很多方法可以获取悬停行或列 但我找不到一种方法来获取行和列索引并为每个单元格显示不同的悬停工具提示 任何人都可以修改以下代码吗 library shiny library DT
  • 将 Excel 文件读入 R 并锁定单元格

    我有一个 Excel 电子表格要读入 R 它受密码保护并锁定了单元格 我可以使用 excel link 导入受密码保护的文件 但我不知道如何解锁 取消保护单元格 excel link 给了我这个错误 gt
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • 如何在R中实现countifs函数(excel)

    我有一个包含 100000 行数据的数据集 我尝试做一些countifExcel 中的操作 但速度慢得惊人 所以我想知道R中是否可以完成这种操作 基本上 我想根据多个条件进行计数 例如 我可以指望职业和性别 row sex occupati

随机推荐

  • ASP.Net:Page_Load() 被多次调用

    我对 ASP Net 不太了解 但我正在尝试为消息框创建一个新控件 您输入一些信息并按下按钮 然而 由于某种奇怪的原因 当按下按钮时 Page Load 被第二次调用 并且所有成员变量都重置为 null 我需要这些变量 而 Page Loa
  • SELECT INTO 和“未声明的变量”错误

    当我尝试执行以下查询时 SELECT id subscriber INTO newsletter to send FROM subscribers 我收到错误 1327 未声明的变量 newsletter to send 该查询有什么问题
  • 使用表达式树的动态 Linq 2 Sql 引发异常“未为 System.String 和 System.String 定义二元运算符 LessThan”

    我正在尝试使用表达式树编写动态 Linq 2 Sql 查询 但我收到一个异常 告诉我未定义 LessThan 和 GreaterThan 运算符System String and System String 我觉得很奇怪 这是真的吗 或者我
  • 使用 tkinter 时如何将 tcl 中的 stdout 获取到 python 字符串变量中?

    我有以下 python 代码 import Tkinter root Tkinter Tk root tk eval puts printed by tcl 它会在屏幕上打印 printed by tcl 如何将 tcl 解释器打印到屏幕上
  • Javascript Date 对象为我的日期字符串返回“无效日期”

    我想使用这个字符串在 Javascript 中创建一个 Date 对象04 21 2014 12 00p当传递给构造函数时 new Date 04 21 2014 12 00p 它返回Invalid Date 我见过其他帖子操纵字符串以满足
  • Spring:@PropertySource 的编程等价物是什么

    考虑以下设置 Configuration PropertySource classpath common properties public class CommonConfig 现在假设我想要在此配置中加载属性源的方式和内容背后有一些重要
  • 如何 JUnit 测试两个 List 包含相同顺序的相同元素?

    Context 我正在写一个简单的JUnit http www junit org 测试为MyObject class A MyObject可以从静态工厂方法创建 该方法采用 varargsString http docs oracle c
  • 如何使用 GMP 计算 2 ^ -18?

    令我尴尬的是 我刚刚发现 给负指数喂食mpz pow ui效果不太好 手册确实说 unsigned long 你知道 对于另一个mpz pow功能 手册使用了我不理解的概念 例如 base exp mod mod 在下面的 void mpz
  • 使用 NSUserdefaults(xcode,swift2) 保存 datePicker 值

    我们如何通过 nsuserdeafaults 或其他方式保存 datepicker 的值 例如 如果一个人选择下午 5 点 那么当他返回应用程序时 他应该在 datepicker 上看到下午 5 点 我不知道如何将 nsusersdefau
  • 当我尝试拖动时,自定义 MKAnnotation 图像会恢复为默认值

    我有一堆不需要拖动的 MKAnnotations 我设置这个 pin setDraggable NO 当我触摸注释并 意外地 拖出注释时 我遇到了问题 它会立即丢失其自定义图像并更改回默认的红色图钉 我该如何防止这种情况发生 在 viewF
  • svn:ignore 不忽略 xcuserdata

    我是第一次使用 svn ignore 属性 所以我可能会误解一些东西 我正在开发一个 iOS 应用程序 我有一个 Xcode 项目 我想忽略 xcuserdata 文件夹 使用 Mac 终端应用程序 我转到 svn 存储库的根目录并尝试使用
  • 在 EntityObject 中的自定义属性上引发 PropertyChanged

    我在 EntityObject 上有几个自定义计算属性 我想触发 PropertyChanged 事件来通知所有绑定 但这不起作用 当我使用 ReportPropertyChanged 时 它会引发参数异常 De eigenschap 名称
  • JavaFX 代码编辑器,带有 Java 代码内容荧光笔

    我想在 JavaFX 中编写一个文本编辑器 其作用类似于 Eclipse Netbeans IDE 以突出显示 Java 代码 任何人都可以建议如何实现它 或者任何人以前已经这样做过 Thanks 据我所知 没有用于代码突出显示 编辑的纯
  • 长时间运行的进程中 DbContext 的生命周期[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 假设我有一个长时间运行的进程 例如 Windows 服务 需要从多个线程访问数据库 DbContext 不是线程安全的 而且最好不要长
  • 我如何编码 SplashScreenActivity.kt 因为我的不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我想向我的应用程序添加启动屏幕 因此我创建了一个名为 SplashScreen 的活动 我将此代码添加到 SplashScreen
  • 了解python中的Queue模块(如何运行它)

    最近引入了关于延迟处理能力以及实现 先进先出 等的队列设计 查看文档 试图获取示例队列 以了解如何在我自己的设计 程序中实现它 但我在运行这段代码时遇到了问题 import queue def worker while True item
  • 消失的存储过程

    所以 不确定发生了什么 但我有存储过程 它在 SQL 2k 中不断从我的数据库中消失 我可以再次添加它 然后尝试从我的网络应用程序执行它 但出现异常 提示无法找到存储过程 然后我会回到管理层并刷新 然后它又消失了 这是存储过程的配置 set
  • Android 树视图

    我知道有可扩展列表视图 http developer android com reference android widget ExpandableListView html但最多只支持2级 我需要一个真正的树视图垂直列表 至少有大约 5
  • 如何在树枝模板中输出胡子模板?

    我需要使用 symfony2 将胡子模板添加到 Twig 模板中 有人为 django 创建了一个 逐字 模板标签 我正在为 twig 寻找一个相应的模板标签 以防止它解析 Mustache 元素 有人能指出我正确的方向吗 Thanks 我
  • 为 ggplot2 生成亮色和暗色对

    brewer pal n 8 name Paired 最多可以创建八个颜色对 但其中只有少数颜色适合打印 有没有更灵活的函数可以生成深色吊坠 应该是深色的 在黑暗中看起来像相同的颜色 可打印 很容易与亮色区分开来 有没有 colorbrew