修改多面图中的图例,ggplot2

2024-05-06

对于此图,我想将图例分成 2 个单独的图例。一种将脉冲湿地显示为圆形,其阴影对应于湿地编号,另一种将静态湿地显示为三角形,其灰色阴影对应于湿地编号。那么水文学传说就不再必要了,我想摆脱它。

这就是我想要的图例的样子(当然要小一些。这是在 PowerPoint 中完成的,只是为了演示)。

我正在粘贴下面的数据和代码。

Data



      Date Hydrology Wetland Temp   Layer
1   15-Jun    Pulsed     One 21.9 Surface
2   15-Jun    Pulsed     One 21.0  Bottom
3    1-Jul    Pulsed     One 28.8 Surface
4    1-Jul    Pulsed     One 23.5  Bottom
5   10-Jul    Pulsed     One 31.8 Surface
6   10-Jul    Pulsed     One 22.6  Bottom
7   14-Jul    Pulsed     One 23.0 Surface
8   14-Jul    Pulsed     One 21.4  Bottom
9   15-Aug    Pulsed     One 28.8 Surface
10  15-Aug    Pulsed     One 28.5  Bottom
11   7-Nov    Pulsed     One 12.1 Surface
12   7-Nov    Pulsed     One  9.9  Bottom
13  15-Jun    Static     Two 22.2 Surface
14  15-Jun    Static     Two 21.2  Bottom
15   1-Jul    Static     Two 29.0 Surface
16   1-Jul    Static     Two 24.1  Bottom
17  10-Jul    Static     Two 30.9 Surface
18  10-Jul    Static     Two 23.3  Bottom
19  14-Jul    Static     Two 25.2 Surface
20  14-Jul    Static     Two 22.6  Bottom
21   1-Aug    Static     Two 27.3 Surface
22   1-Aug    Static     Two 23.5  Bottom
23  15-Aug    Static     Two 26.7 Surface
24  15-Aug    Static     Two 23.6  Bottom
25   7-Nov    Static     Two 11.9 Surface
26   7-Nov    Static     Two  9.0  Bottom
27  15-Jun    Pulsed   Three 21.3 Surface
28  15-Jun    Pulsed   Three 20.9  Bottom
29   1-Jul    Pulsed   Three 26.1 Surface
30   1-Jul    Pulsed   Three 23.8  Bottom
31  10-Jul    Pulsed   Three 30.1 Surface
32  10-Jul    Pulsed   Three 22.8  Bottom
33  14-Jul    Pulsed   Three 23.7 Surface
34  14-Jul    Pulsed   Three 22.2  Bottom
35   7-Nov    Pulsed   Three 12.5 Surface
36   7-Nov    Pulsed   Three 10.0  Bottom
37  15-Jun    Static    Four 21.0 Surface
38  15-Jun    Static    Four 19.3  Bottom
39   1-Jul    Static    Four 25.0 Surface
40   1-Jul    Static    Four 21.2  Bottom
41  10-Jul    Static    Four 25.7 Surface
42  10-Jul    Static    Four 21.3  Bottom
43  14-Jul    Static    Four 22.5 Surface
44  14-Jul    Static    Four 20.8  Bottom
45   1-Aug    Static    Four 24.1 Surface
46   1-Aug    Static    Four 22.8  Bottom
47  15-Aug    Static    Four 25.1 Surface
48  15-Aug    Static    Four 22.2  Bottom
49   7-Nov    Static    Four 12.2 Surface
50   7-Nov    Static    Four  9.1  Bottom
51  15-Jun    Static    Five 19.7 Surface
52  15-Jun    Static    Five 19.2  Bottom
53   1-Jul    Static    Five 24.1 Surface
54   1-Jul    Static    Five 22.9  Bottom
55  10-Jul    Static    Five 24.6 Surface
56  10-Jul    Static    Five 21.7  Bottom
57  14-Jul    Static    Five 21.3 Surface
58  14-Jul    Static    Five 23.0  Bottom
59   1-Aug    Static    Five 23.8 Surface
60   1-Aug    Static    Five 22.0  Bottom
61  15-Aug    Static    Five 24.8 Surface
62  15-Aug    Static    Five 23.1  Bottom
63   7-Nov    Static    Five 11.7 Surface
64   7-Nov    Static    Five  8.8  Bottom
65  15-Jun    Pulsed     Six 21.2 Surface
66  15-Jun    Pulsed     Six 20.4  Bottom
67   1-Jul    Pulsed     Six 24.9 Surface
68   1-Jul    Pulsed     Six 22.5  Bottom
69  10-Jul    Pulsed     Six 28.6 Surface
70  10-Jul    Pulsed     Six 22.0  Bottom
71  14-Jul    Pulsed     Six 21.9 Surface
72  14-Jul    Pulsed     Six 21.4  Bottom
73  15-Aug    Pulsed     Six 27.5 Surface
74  15-Aug    Pulsed     Six 26.1  Bottom
75   7-Nov    Pulsed     Six 13.3 Surface
76   7-Nov    Pulsed     Six  9.5  Bottom
77  15-Jun    Pulsed   Seven 19.7 Surface
78  15-Jun    Pulsed   Seven 18.7  Bottom
79   1-Jul    Pulsed   Seven 23.0 Surface
80   1-Jul    Pulsed   Seven 20.8  Bottom
81  10-Jul    Pulsed   Seven 24.7 Surface
82  10-Jul    Pulsed   Seven 22.2  Bottom
83  14-Jul    Pulsed   Seven 21.3 Surface
84  14-Jul    Pulsed   Seven 20.6  Bottom
85  15-Aug    Pulsed   Seven 26.2 Surface
86  15-Aug    Pulsed   Seven 24.7  Bottom
87   7-Nov    Pulsed   Seven 12.0 Surface
88   7-Nov    Pulsed   Seven 10.5  Bottom
89  15-Jun    Static   Eight 20.6 Surface
90  15-Jun    Static   Eight 19.5  Bottom
91   1-Jul    Static   Eight 28.1 Surface
92   1-Jul    Static   Eight 22.5  Bottom
93  10-Jul    Static   Eight 28.8 Surface
94  10-Jul    Static   Eight 23.1  Bottom
95  14-Jul    Static   Eight 24.7 Surface
96  14-Jul    Static   Eight 21.9  Bottom
97   1-Aug    Static   Eight 25.0 Surface
98   1-Aug    Static   Eight 22.0  Bottom
99  15-Aug    Static   Eight 27.6 Surface
100 15-Aug    Static   Eight 25.3  Bottom
101  7-Nov    Static   Eight 12.1 Surface
102  7-Nov    Static   Eight 10.3  Bottom
103 15-Jun    Static    Nine 20.7 Surface
104 15-Jun    Static    Nine 19.8  Bottom
105  1-Jul    Static    Nine 24.8 Surface
106  1-Jul    Static    Nine 22.7  Bottom
107 10-Jul    Static    Nine 28.3 Surface
108 10-Jul    Static    Nine 22.8  Bottom
109 14-Jul    Static    Nine 23.9 Surface
110 14-Jul    Static    Nine 22.0  Bottom
111  1-Aug    Static    Nine 27.7 Surface
112  1-Aug    Static    Nine 24.5  Bottom
113 15-Aug    Static    Nine 25.8 Surface
114 15-Aug    Static    Nine 23.4  Bottom
115  7-Nov    Static    Nine 11.9 Surface
116  7-Nov    Static    Nine  9.5  Bottom
117 15-Jun    Pulsed     Ten 22.3 Surface
118 15-Jun    Pulsed     Ten 21.9  Bottom
119  1-Jul    Pulsed     Ten 29.6 Surface
120  1-Jul    Pulsed     Ten 28.2  Bottom
121 10-Jul    Pulsed     Ten 33.0 Surface
122 10-Jul    Pulsed     Ten 30.4  Bottom
123 14-Jul    Pulsed     Ten 25.6 Surface
124 14-Jul    Pulsed     Ten 24.1  Bottom
125  7-Nov    Pulsed     Ten 13.2 Surface
126  7-Nov    Pulsed     Ten 10.1  Bottom 
  

Code

colvec <-c("white", "white","gray80", "gray80", "gray60", "gray60", "gray37", "gray37","black", "black")  
water$Layer=factor(water$Layer, c("Surface", "Bottom"))
water$Date=factor(water$Date, c("15-Jun", "1-Jul", "10-Jul", "14-Jul", "1-Aug", "15-Aug", "7-Nov"))
water$Wetland=factor(water$Wetland, c("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten"))

ggplot(water, aes(Date, Temp, group=Wetland, shape=Hydrology)) +
  geom_point(size =4, color = "black")+
  geom_point(aes(color=Wetland),size=3) +
  scale_colour_manual(values=colvec) +
  facet_grid(Layer ~ Hydrology) 

Thanks,

-Sarah


这是受此启发的解决方案question https://stackoverflow.com/questions/11883844/inserting-a-table-under-the-legend-in-a-ggplot2-histogram

首先,新建变量colvec2只包含一次所有颜色。

colvec2 <-c("white", "gray80", "gray60", "gray37",  "black")  
colvec <-c("white", "white","gray80", "gray80", "gray60", "gray60", "gray37", "gray37","black", "black")  

原始图另存为对象且没有图例。

p<-ggplot(water, aes(Date, Temp, group=Wetland, shape=Hydrology)) +
  geom_point(aes(color=Wetland),size=3) +
  scale_colour_manual(values=colvec) +
  facet_grid(Layer ~ Hydrology) +
  theme(legend.position="none")

仅包含数据的图Pulsed. Set shape=16在 - 的里面geom_point(). With scale_colour_manual()更改了图例标题和颜色。

p1<-ggplot(subset(water,Hydrology=="Pulsed"), 
     aes(Date, Temp, group=Wetland, shape=Hydrology)) +
  geom_point(aes(color=Wetland),size=3,shape=16) +
  scale_colour_manual("Pulsed Wetlands",values=colvec2) +
  facet_grid(Layer ~ Hydrology)

p1, 仅适用于Static.

p2<-ggplot(subset(water,Hydrology=="Static"), 
      aes(Date, Temp, group=Wetland, shape=Hydrology)) +
  geom_point(aes(color=Wetland),size=3,shape=17) +
  scale_colour_manual("Static Wetlands",values=colvec2) +
  facet_grid(Layer ~ Hydrology)

保存绘图p1 and p2 using ggplot_build() and ggplot_gtable().

pt1<-ggplot_gtable(ggplot_build(p1))
pt2<-ggplot_gtable(ggplot_build(p2))

只提取两个图的一些图例。这次的图例在 12.element(元素包含guide-box)

leg1<-pt1$grobs[[12]]
leg2<-pt2$grobs[[12]]

Now use grid.arrange() and arrangeGrob()绘制所有部分。

library(gridExtra)
grid.arrange(arrangeGrob(p,arrangeGrob(leg1,leg2), ncol = 2,widths=c(3/4,1/4)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

修改多面图中的图例,ggplot2 的相关文章

  • a * b * y 中的错误:不一致的数组[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 Cold lt matrix c 1 89 3 76 2 47 4 76 2 2 byrow TRUE X lt mat
  • 如何解决这个错误--dbWriteTable()

    我成功连接到 MYSQL DB 并尝试将结果写回数据库 dbWriteTable con predicted min forecast min 其中 Forecast min 只是双精度向量 我收到此错误消息 函数 类 fdef mtabl
  • 在 R 中执行 read.csv 时未读取所有行

    这是输入文件 http www yourfilelink com get php fid 841283 http www yourfilelink com get php fid 841283 我执行了 options stringsAsF
  • 如果包已经加载,那么在函数中需要包会有什么影响?

    加入有没有什么不良影响library require函数内的语句会被频繁调用吗 所用的时间似乎可以忽略不计 但我每隔几分钟调用该函数 我想知道重复是否有任何缺点require calls 请注意 该功能只是个人实用程序 不被共享 即 我是唯
  • 调整 R 图的边距

    我对调整 R 图的边距很感兴趣 我在 MacOS 上使用 R Studio 在 2013 intel CPU Macbook pro 上运行 这是我用于生成绘图的数据 spins lt runif 50 min 0 max 50 这是我用来
  • Foreach Parallel - 多个输出的组合功能

    我有一组 45000 个用户和 40 多部电影的评分 我需要根据每个用户与其他用户的皮尔逊相关性来预测每个用户的新评分 我还需要存储相似用户的集合以及每个用户 电影组合的相似性 我使用 foreach 包并行执行循环 我设法编写的代码是这样
  • 如何使用 R markdown 和 bookdown 将图形列表和表格列表添加到目录中

    我有一份报告 pdf 输出 我想在附录中添加参考书目 图表列表和表格列表 我希望这三个元素出现在目录中 我添加参考书目通过增加bibliography bibliography bib到我的 yaml 标头 我直接用 LaTex 添加的图形
  • 将 R 中的 arules 生成的规则应用于新交易

    我的目标是使用 R 包生成的规则arules来预测topic每个事务 每个事务有 1 个主题 其中每个事务是文档中的一组单词 我有一个训练集trans train 用于创建规则 和测试集trans test 我想预测它的 主题 我还希望能够
  • R 提交到 CRAN:构建包的 R 版本?

    我想向 CRAN 提交一个包裹 在里面CRAN 存储库政策 http cran r project org web packages policies html它指出 当发布新的 R x y 0 版本时 R CMD 检查给出 错误 的包将被
  • Rstudio 更有意义的窗口标题

    我在 Ubuntu 16 04 下使用 R studio 版本 1 0 143 窗口标题仅显示一个非常无信息的 RStudio 我希望至少有当前选项卡的名称 或者最好是与此选项卡对应的文件的完整路径 在 Windows 下 完整路径似乎出现
  • 对列表中的每个数值列表求和

    我想将值附加到 R 中河图中的标签 我有一个值列表列表 需要它来显示节点之间的流 如下所示 edges lt list A list C 10 E 5 B list C 10 C list D 13 E 7 我知道有一个函数可以减少 或求和
  • 修改 GGplot2 对象

    然而 我很好奇 是否可以添加任何特定的图例或将哪个物种对应于观察到的预期绘图中 以分别知道它是哪个圆圈 我目前使用的是一个名为 finches 的假数据集 该包称为 cooccurr 它创建一个 ggplot 对象 我很好奇如何实际编辑它以
  • 重用 R 中内置的模型

    在 R 中构建模型时 如何保存模型规范以便可以在新数据上重用它 假设我根据历史数据建立逻辑回归 但直到下个月才会有新的观察结果 最好的方法是什么 我考虑过的事情 保存模型对象并在新会话中加载 我知道某些模型可以使用 PMML 导出 但还没有
  • 使用 RSQLite 在 R 中加载 SQLite 表

    我有这个函数用来加载 SQLite 表 sqLiteConnect lt function database table library DBI library RSQLite con lt dbConnect SQLite dbname
  • Foreach循环无法找到对象

    我正在尝试将 foreach 与并行后端结合使用来加速计算 用于特征选择的 AUCRF 随机森林的交叉验证 如果这确实重要的话 在这样做的过程中 我需要获取向量的子集 向量的名称可以更改 但可以作为字符向量进行访问 我使用 eval par
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制
  • 在 R 中使用 randomforest() 进行分类?

    我最初有一个由 N 行 12 列组成的数据框 最后一列是我的班级 0 或 1 我必须将整个数据框转换为数字 training lt sapply training temp as numeric 但后来我认为我需要将类列作为因子列来使用 r
  • 如何在 sqlSave() 命令中跳过主键?

    我正在尝试使用 RODBC 在 MySQL 数据库中插入 data frame 我正在使用的命令如下 sqlSave channel dbData tablename table name append TRUE safer TRUE fa
  • R闪亮的html小部件之间的交互

    我正在开发一个 R 闪亮应用程序 它使用多个 html 小部件 特别是网络D3 d3热图 and 和弦诊断 这些小部件单独工作正常 但是 在同一页面中使用它们会留下一个空格处他们应该在哪里 这是显示错误的可重现代码 在 UI 中注释绘图线
  • R:变换不规则时间字符串

    我有两个不同的时间序列 来自不同的数据帧 具有不同的不规则格式 但问题是相同的 我只想提取小时 分钟 秒和毫秒 时代系列看起来像这样 ts1 08 27 23 445 08 27 24 280 08 27 25 115 I tried st

随机推荐

  • 如何给MySQL表添加主键?

    这是我尝试过的 但失败了 alter table goods add column id int 10 unsigned primary AUTO INCREMENT 有人有提示吗 添加列后 您可以随时添加主键 ALTER TABLE go
  • 如何在 Android 模拟器中模拟真实的外部 SD(更新:可移动存储)卡

    我尝试模拟外部 SD 卡 就像在真实设备中一样 在真实设备中 除非使用新的 存储访问框架 API 21 和 22 否则外部 SD 卡不可写入 当我添加带有文件或大小的 SD 卡时 我总是得到一个可写的 SD 卡 这对于真实的设备来说是不正确
  • 值得学习的优秀 Zend Framework 示例应用程序 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • python:无效的base64编码字符串:数据字符数(5)不能多于4的倍数1

    输出以下错误 异常值 Base64 编码字符串无效 数据字符数 5 不能多于 4 的倍数 1异常位置 b64decode 中的 D Program Files Python lib base64 py 第 87 行 我这样输入 python
  • 使用 ocaml List.fold_left 列表中的最后一个元素

    我可以通过以下代码找到列表的最后一个元素 let last xs a list a let rec aux xs prev match xs with gt prev x ys gt aux ys x in match xs with gt
  • Symfony2 - ReferencedColumnName id 为空

    我要放弃食谱文章了表单集合 http symfony com doc current cookbook form form collections html但是 当尝试将其保留到数据库时 我收到约束冲突错误 引用的列名称 id 为空 SQL
  • 如何将手动更改导入 Terraform 远程状态

    我是 terraform 的新手 我已经在 s3 中创建了远程 tfstate 现在在我的 AWS 基础设施中也完成了一些手动更改 我需要将这些手动更改导入 tfstate 我对某些资源使用了导入命令 但对于某些资源 例如 IAM 策略等
  • 将 NSDictionary 保存到 plist

    我正在使用这篇文章中找到的代码 Plist 中的多个数组 https stackoverflow com questions 6192451 mulitple arrays from plist 6193397 6193397 具有相同的
  • 如何重置 pandas 数据框中的索引? [复制]

    这个问题在这里已经有答案了 我有一个数据框 从中删除了一些行 结果 我得到一个数据帧 其中索引是这样的 1 5 6 10 11 我想将其重置为 0 1 2 3 4 我该怎么做 以下似乎有效 df df reset index del df
  • 查找 Obj-C 中对象实例的所有引用

    我正在尝试找出一些错误 其中之一与内存泄漏有关 我可以看出该对象仍然有一个引用 因为 Instruments 仍然将其显示为活动状态 但 Instruments 不会将其注册为泄漏 无论如何 有没有办法查看 Objective C 中对象的
  • 如何使用 PHP 检测 zip 炸弹?

    我正在制作一个 PHP 脚本 用于检索用户给定的 zip 文件 将其解压缩 并使用其中的文件执行一些操作ZipArchive目的 我怎样才能避免像这样的拉链炸弹42 zip http www unforgettable dk 查看 zip
  • 是否可以一次显示 HTML 选择表单字段中的所有选项,而无需单击它?

    我正在使用 X Editable jQuery 就地编辑库作为任务状态选择字段 整个过程的所有阶段如下所示 单击状态 然后 它隐藏状态 SPAN 并显示隐藏的选择字段 您可以单击选择字段 使其下拉并显示所有可用选项 单击新的选择选项值 然后
  • 在 Swift 中获取可见的 IndexPath UICollectionView

    如何获得visible IndexPath while scrolling in collectionView 我参考了很多link1 https stackoverflow com questions 30281451 iterate o
  • Azure DocumentDB 本地模拟器是否支持 mongodb 协议?

    Azure DocumentDB 本地模拟器是否支持类似于 Azure 托管 DocumentDB 中可用的 MongoDB 协议的 mongodb 协议 我没有看到启动本地模拟器时指定协议的方法 是的 Azure DocumentDB 模
  • PHP cookie 和会员安全

    我创建了一个论坛 该论坛在登录时使用 PHP 会话来确定用户 ID 并使用 cookie 来进行日志登录 我想我有两个问题 这是最好 最安全的方法吗 可以使用javascript通过地址栏手动添加cookie 这是一个巨大的安全风险 有没有
  • 哪些参数被传递给回溯中的函数?

    在 R 中 如果执行因错误而停止 我可以评估traceback 查看哪个函数发生了错误 哪个函数是从哪个函数调用的 等等 它会给出类似这样的信息 8 ar yw default x aic aic order max order max n
  • 如何使用 jQuery 获取 asp:RadioButton 的选中值?

    我需要做这样的事情
  • 使用 Reporting Services 将组保持在一页上

    我使用 Reporting Services 创建了一个报表作为 C 应用程序的一部分 但我找不到一些我习惯在其他环境中看到的功能 我相信 MS Access 和 Crystal 报表都有一个名为 保持在一起 的选项 这样您就可以将特定的数
  • Django - 带上下文的重定向

    我有一个注册页面 它获取用户的用户名和密码并将其保存在数据库中 如果用户注册成功 我想将他重定向到 登录 页面 该页面的值表示注册成功 重定向页面上的预期输出 您已成功注册 Sign In Username Password 因此 我从注册
  • 修改多面图中的图例,ggplot2

    对于此图 我想将图例分成 2 个单独的图例 一种将脉冲湿地显示为圆形 其阴影对应于湿地编号 另一种将静态湿地显示为三角形 其灰色阴影对应于湿地编号 那么水文学传说就不再必要了 我想摆脱它 这就是我想要的图例的样子 当然要小一些 这是在 Po