geom_bar:颜色渐变和交叉影线(使用gridSVG),透明度问题

2024-02-25

使用真棒ggplot包,我想要一个条形图,其中fill美学被映射到一个连续变量,实际上是值,在它上面是一个纹理,实际上是条纹和交叉影线。

颜色渐变很重要,因为它代表重要性,而纹理将显示类别“A”、“B”以及它们的重叠。因此,对角线分别以一种方式、相反方式和交叉剖面线。 我知道维恩图可以完成这项工作,但我们有 35 个样本,我认为比较会更容易看到。

The fill is trivial, however, the texture one is tricky. On SO, thanks to @baptise https://stackoverflow.com/users/471093/baptiste (see here https://stackoverflow.com/questions/26110160/how-to-apply-cross-hatching-to-a-polygon-using-the-grid-graphical-system/26110400#26110400 and here https://stackoverflow.com/questions/25014492/geom-bar-pictograms-how-to) I managed to get this output with dummy data: crossbars

问题是透明度十字架的背景。如果可能的话得到alpha在背景下工作grid.patternFill()功能那就太好了。不幸的是,在我手中它不起作用。

任何帮助都感激不尽。

虚拟数据可以在此处加载:

dfso <- structure(list(Sample = c("S1", "S2", "S1", "S2", "S1", "S2"), 
  qvalue = c(14.704287341, 8.1682824035, 13.5471896224, 6.71158432425, 
  12.3900919038, 5.254886245), type = structure(c(1L, 1L, 2L, 
  2L, 3L, 3L), .Label = c("A", "overlap", "B"), class = "factor"), 
  value = c(897L, 1082L, 503L, 219L, 388L, 165L)), class = c("tbl_df", 
  "tbl", "data.frame"), row.names = c(NA, -6L), .Names = c("Sample", 
  "qvalue", "type", "value"))

代码在这里:

library("ggplot2")
library("gridSVG")
library("gridExtra")
library("dplyr")
library("RColorBrewer")

cols <- brewer.pal(7,"YlOrRd")
pso <- ggplot(dfso)+
  geom_bar(aes(x = Sample, y = value, fill = qvalue, linetype = type), width = .8, colour = "black", stat = "identity", position = "stack", alpha = 1)+
  theme_classic(18)+
  theme( panel.grid.major = element_line(colour = "grey80"),
     panel.grid.major.x = element_blank(),
     panel.grid.minor = element_blank(),
     legend.key = element_blank(),
     axis.text.x = element_text(angle = 90, vjust = 0.5))+
  guides(linetype = FALSE) +
  ylab("Count")+
  scale_fill_gradientn("-log10(qvalue)", colours = cols, limits = c(0, 20))+
  scale_linetype_manual(values = c("dotted", "solid", "dotted"))+
  scale_y_continuous(expand = c(0, 0), limits = c(0, 2000))

# gridSVG
pat1 <- pattern(linesGrob(gp = gpar(col="black", lwd = 1)),
                width = unit(5, "mm"), height = unit(5, "mm"),
                dev.width = 1, dev.height = 1)
pat2 <- pattern(linesGrob(x = unit(0:1, "npc"), y = unit(1:0, "npc"),
                          gp = gpar(col="black", lwd = 1)),
                width = unit(5, "mm"), height = unit(5, "mm"),
                dev.width = 1, dev.height = 1)
crossGrob <- gTree(children = gList(linesGrob(gp = gpar(col="black", lwd = 1)), linesGrob(x = unit(0:1, "npc"), y = unit(1:0, "npc"), gp = gpar(col="black", lwd = 1))))
registerPatternFill("hash1", pat1)
registerPatternFill("hash2", pat2)
registerPatternFill("cross", grob = crossGrob, dev.width = 1, dev.height = 1, width = unit(5, "mm"), height = unit(5, "mm"))
gridsvg("crossbars.svg", width = 10)
print(pso)
grid.force()
grid.patternFill("geom_rect.rect", alpha = 0.2, grep = TRUE, group = FALSE,
                 label = rep(c("hash1", "cross", "hash2"), 1))
dev.off()

In grid.patternFill the alpha据我了解,参数应该提供透明度。但是,它没有任何效果,并且颜色丢失。我只填充了第一个条的图案,以便您看到对比。

Edit: the alpha工作正常,但它作用于图案本身,i.e线条。这就解释了为什么线条显得如此苍白。问题更多在于背景被假定为白色且不透明。

The linetype映射是试图突出显示重叠部分,但这并不好。如果透明度有效gridSVG我将放弃这部分并始终保持实线。

提前谢谢了,

Aurelien

如果有任何用途,输出sessionInfo():

R version 3.2.1 (2015-06-18)
Platform: x86_64-apple-darwin14.3.0 (64-bit)
Running under: OS X 10.10.4 (Yosemite)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods   base     
other attached packages:
[1] gridExtra_0.9.1    RColorBrewer_1.1-2 dplyr_0.4.1        gridSVG_1.4-3      ggplot2_1.0.1     
loaded via a namespace (and not attached):
 [1] Rcpp_0.11.6      XML_3.98-1.3     assertthat_0.1   digest_0.6.8     MASS_7.3-42      plyr_1.8.3       DBI_0.3.1       
 [8] gtable_0.1.2     magrittr_1.5     scales_0.2.5     stringi_0.5-5    reshape2_1.4.1   labeling_0.3     proto_0.3-10    
[15] RJSONIO_1.3-0    tools_3.2.1      stringr_1.0.0    munsell_0.4.2    parallel_3.2.1   colorspace_1.2-6

I am answering my own question, as there is a way to fill a specific color to the pattern thank to this link https://www.stat.auckland.ac.nz/~paul/Reports/leaf/leaf.html#fig-barchart-pattern. On the first bar, for category "A", it could look like this: cross

更换pat1模式通过以下代码:

pat1 <- pattern(gTree(children=gList(
                      rectGrob(gp=gpar(col=NA, fill=cols[4])),
                      linesGrob(gp=gpar(col="black", lwd = 5)))),
                      width = unit(5, "mm"), height = unit(5, "mm"),
                      dev.width = 1, dev.height = 1)

For geom_bar颜色很少,它会起作用,但对于我的问题来说fill颜色映射到热图比例,这会很乏味。

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

geom_bar:颜色渐变和交叉影线(使用gridSVG),透明度问题 的相关文章

  • 如何在 R 中使用别名运行系统可执行文件?

    假设我正在 R 中运行系统命令来运行executable inputfile lt path myfile txt 我该如何更换 path myfile txt在下面的命令中inputfile如下面命令所示 system executabl
  • rgdax(coinbase)数据未按预期收集数据

    我正在尝试使用rgdaxR 包用于下载一些历史价格 我设置了 API 密钥等 并尝试在过去 24 小时内加载 start lt strftime Sys time Y m dT H M SZ tz UTC end lt strftime S
  • 如何禁用“保存工作区图像?” R 中的提示?

    当我退出交互式 R shell 时 它每次都会显示一个烦人的提示 gt gt Save workspace image y n c n 我总是对此回答 不 因为如果我想保存我的工作 我就会这么做before试图退出 如何去掉这个提示呢 No
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • 成对散点图;一对多[重复]

    这个问题在这里已经有答案了 有没有一种简洁的方法来创建pairs仅将一个变量与许多其他变量进行比较的图 换句话说 我可以只绘制标准的一行或一列吗 pairs不使用循环的散点图矩阵 融化你的数据 然后使用带有facet的ggplot libr
  • 仅当 ggplot 中 y 轴的下限设置为 0 时才会出现图条[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个条形图 当我将限制设置为 0 7 时 就会出现条形 但是 我希望下限为 1 而不是 0 当我将下限设置为 1 时 条形图不会出现 我收到以下错误消息 Removed 8 rows contain
  • 基于列重复数据集中的行,但增加行[重复]

    这个问题在这里已经有答案了 我有一个数据集 其中包含项目名称 开始年份和合同期限 我需要将这个数据集开发成时间序列 例如 我的数据集中的一行是 项目 A 开始年份 2003 年 合同期限 5 我想根据合同期限重复每一行 我的数据集如下所示
  • 如何根据值扩展数据框? [复制]

    这个问题在这里已经有答案了 我有以下输入数据框 df lt data frame x c a b c y c 4 5 6 from c 1 2 3 to c 2 4 6 df x y from to 1 a 4 1 2 2 b 5 2 4
  • 有什么方法可以访问 makeActiveBinding 安装的函数吗?

    标题基本上说明了一切 如果我这样做 makeActiveBinding x function runif 2 GlobalEnv x 1 0 7332872 0 4707796 x 1 0 5500310 0 5013099 那我有什么办法
  • 如何测试字符串中的前三个字符是r中的字母还是数字?

    下面给出了我拥有的数据集的示例 请注意 总数据集中我有超过两列 ID X 1 MJF34 2 GA249D 3 DEW235R 4 4SDFR3 5 DAS3 我想测试 X 中的前三个字符是否是字母 如果是 那么我想替换该值以仅显示前三个字
  • 拆分并保存在新的 data.frames 中

    我有一个大 data frame 144 列 我想将其分成每组 3 列 子文件或子 data frame 然后将子 data frame 保存在单独的文件中 换句话说 file1 将包含从 1 到 3 的列 file2 将包含从 6 到 9
  • 在另一列的字符串中搜索一列中的文本

    这里是 R 新手 一直在搜索此论坛 尝试找到一种在同一行数据的字符串中搜索文本的方法 我以前使用过 grepl 但无法让它向下查找列并对每一行应用检查 我觉得这是一个简单的解决方案 但我花了几个小时 但似乎无法得到它 基本上我有类似下面第
  • 如何计算满足条件的行数

    假设我有以下数据框 Data1 X1 X2 1 15 1 2 3 1 3 7 0 4 11 1 5 1 0 6 9 0 7 18 0 8 6 1 9 3 1 我想知道如何找到观察的总数X1大于 9 并且X2等于1 我想我需要使用sum 但我
  • 在 R 中查找 Windows 用户名

    有没有办法在 R 会话中获取当前的 Windows 用户名或 Windows 主目录 Thanks 抱歉 如果我错过了什么 但我找不到任何东西 你可以做 Sys getenv USERNAME Sys getenv HOME 如果你只是输入
  • 将角色分成几部分

    我观察到以下特征 l lt mod range1 seq m n 0 1 range2 seq 2 2 0 1 range3 seq 2 2 0 1 在 R 中使用正则表达式我想要拆分l在以下结构中 1 mod range1 seq m n
  • 列值的切换功能

    我有一个缩写变量 名称错误地分散在整个列表中 请参阅下面的示例结构 ID lt c SPW SM DLS SJ joe schmoe CEJ teddy roos GVF MJC LH sally fields Full names sho
  • 将儒略日期转换为 PosixCt 日期

    我发现自己在解决这个问题 我需要将 R 中的儒略日期转换为正常日期 YYYY MM DD 我知道我可以指定as Date julian date origin 但我不知道应该提供哪个来源 我的朱利安日期类似于 2458010 2458011
  • 如何解决在Windows中运行R时出现“剪贴板缓冲区已满且输出丢失”错误?

    我正在尝试将一些数据直接从 R 复制到我的 Windows 计算机中的剪贴板 我发现在一些网站上使用 file clipboard 可以工作 确实如此 但对于非常小的数据集 例如 如果我复制一个小数据集 100 个 obs 它会顺利工作 d
  • 通过单击堆叠条形图打开选项卡

    我正在使用 R 构建一个包含转发的堆积条形图 ggplot and plotly 如果单击条形图的一部分 我希望打开一个新的浏览器选项卡并显示该特定日期的推文以及指定的转发量 但是 当我单击下面示例中的其中一个栏时 会打开一个不同的链接 表
  • 有条件地将字符串转换为特定数值

    我确信对此有一个简单的答案 但我已经扫描了堆栈溢出 但无法找到解决方案 似乎 sapply 和 ifelse 函数的组合可能可以完成这项工作 但我不确定 所以我有一个包含字符的数据框 除了一列是数值 Create dataframe whi

随机推荐

  • JPanel 和 CardLayout 出现 NullPointerException 错误

    我正在为课堂开发酒店管理软件 我的代码遇到了一些问题 此时 我只是尝试将我在单独的类中创建的 JPanel 添加到我的主 gui 中 任何帮助将不胜感激 谢谢 Exception in thread main java lang NullP
  • Python语音识别速度很慢

    我目前正在开发一个智能助手程序 基本上它只是听用户说的话 并据此对代码执行某些操作 直到今天我切换到笔记本电脑时 它都运行良好 该程序不会打印出任何错误 但它也不会打印出我所说的内容 我正在使用Python语音识别 https pypi o
  • 无法使用 PHP 和 Nginx 让 Zorba 在 Windows 7 上运行

    我正在尝试在 Windows 7 计算机上安装 Zorba 的帮助指示 http zorba xquery com doc zorba 2 0 zorba html php windows tutorial html 我已经完成 验证 Zo
  • 将 MSSQL 中除第一个字符和空格之外的字符串的所有字符替换为星号

    我想知道是否可以通过函数对 mssql 中的敏感数据进行哈希处理 并为所有字段保留第一个字符 原样 例子 Jon Kirk 名字应提取为 J K 我首先发布了一个递归解决方案 这更快 declare name varchar 20 Jon
  • Django 的 Capistrano

    有谁知道 Django 中 Capistrano Webistrano 的等效版本吗 Fabric http fabfile org是一个基于Python的应用部署系统 它可用于部署 Django 项目
  • git 没有完全退出(退出代码 128)[重复]

    这个问题在这里已经有答案了 我收到这个错误 尝试了所有解决方案如何解决 TortoiseGit 上的 git 未完全退出 退出代码 128 错误 https stackoverflow com questions 9617336 how t
  • Rails 3.1,capybara-webkit,如何在链接内执行javascript?

    我可以在与水豚的链接中执行javascript吗click link next page 该链接如下所示 a href Next Question a 我在 github 的 capybara 上读到 我可以通过单击提交按钮来提交表单 如下
  • OpenCV 中如何知道图像是否为 RGB?

    我使用 OpenCV 库用 C 编写了一个程序 该程序从网络摄像头录制视频 然后将其分割成帧 我想知道帧是否为 RGB 因为我想访问每个像素的 RGB 属性 用于捕获的编解码器是 CV FOURCC M J P G 如何获取 RGB 色彩空
  • pycharm中的源和资源根是什么?

    我正在开发一个关于 NLP 的项目 我有一个很大的语料库和一些代码 我想在我的项目中将它们分开 但我想知道选择正确的名称是什么 数据与代码就像汇编中的数据段和代码段 或者 来源和资源正如我的一位朋友所坚持的那样 这是正确的术语 我还在 py
  • Android 连接到本地主机

    我试图通过 wamp 服务器将我的 Android 应用程序连接到本地主机 url 但它不起作用 我的目标是获取 json 数据并解析这些数据 对于我的测试 我使用的是设备而不是模拟器 并且我使用 AndroidManifest xml 中
  • 从函数内的 JSON 响应更新全局变量

    我正在尝试从 JSON 响应中获取一些变量并将其显示在自定义表视图中 问题是变量永远不会更新 更多解释是我的代码 func getAddresses let todosEndpoint String my link guard let to
  • 从 Ubuntu 10.10 升级到 12.04 后,multiprocessing.map 和 joblib 仅使用 1 个 cpu

    我有一些完美运行的 python 代码 它使用多处理模块并以 100 的速度加载我机器上的所有 8 个 CPU 当我从 Ubuntu 10 10 升级到 12 04 后 最明显的事情 也许我做了其他什么事情破坏了一切 它停止工作 经过大量调
  • neo4j cypher 单标签与多标签性能

    考虑以下示例 一个基于 Neo4j 的 wiki 其中包含大量文章和更多文章版本 所有编辑的历史记录 使用多个标签来标识每个节点有多大区别 article Article Public article Article Version 然后查
  • 使用CTE简化SQL语句

    我有一个如下查询 SELECT A a A b B c CASE WHEN THEN ELSE END AS CalculatedValue B d FROM dbo TableA A INNER JOIN dbo TableB B ON
  • 在 Django 表单字段之间显示一些自由文本

    我有一个如下所示的表格 class MyForm Form personal data firstname CharField lastname CharField education data university CharField m
  • 如何检查 dynamodb 中的字符串集中是否存在字符串

    我在表中的每个项目中都设置了一个字符串 例如 Title Book 101 Title ISBN 111 1111111111 Authors Author 1 Price 2 Dimensions 8 5 x 11 0 x 0 5 Pag
  • 如何处理“inspect.getsource”的限制 - 或者如何仅获取函数的源?

    我一直在玩inspectPython 标准库中的模块 下面的例子工作得很好 假设inspect已导入 def foo x y return x y print inspect getsource foo 将打印def foo x y n r
  • 任何自动保存文档版本的 Notepad++ 插件 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道有什么记事本 插件可以定期保存我正在处理的内容的版本吗 理想情况下 它会保存许多版本 并在标题
  • git 拒绝获取当前分支

    我设置了一个远程存储库 我可以将新的更改推送到它 但我无法从中获取 我总是收到 相当神秘的 错误消息 fatal Refusing to fetch into current branch refs heads master of non
  • geom_bar:颜色渐变和交叉影线(使用gridSVG),透明度问题

    使用真棒ggplot包 我想要一个条形图 其中fill美学被映射到一个连续变量 实际上是值 在它上面是一个纹理 实际上是条纹和交叉影线 颜色渐变很重要 因为它代表重要性 而纹理将显示类别 A B 以及它们的重叠 因此 对角线分别以一种方式