是否可以为 geom_point 和 geom_segment 添加图例?

2024-03-26

我想知道是否可以添加图例geom_point and geom_segment?从 geom_point 我自动获取图例,但是我不知道如何添加图例geom_segment。我努力了scale_linetype_manual但显然它不起作用。

这是我的数据片段:

 df1 <- structure(list(type = c("WT", "SHC", "WT", "SHC", "WT", "SHC", 
                                   "WT", "SHC", "WT", "SHC", "WT", "SHC", "WT", "SHC", "WT", "SHC", 
                                   "WT", "SHC", "WT", "SHC", "WT", "SHC", "WT", "SHC"), lipids = structure(c(3L, 
                                                                                                             3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
                                                                                                             3L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("DIP", "mDIP", "CL [66:0]", 
                                                                                                                                                     "CL [70:2]", "CL [70:4]", "CL [72:4]", "CL [74:2]", "PC [32:1]", 
                                                                                                                                                     "PC [32:2]", "PC [34:1]", "PC [34:2]", "PC [34:3]", "PC [34:4]", 
                                                                                                                                                     "PC [36:2]", "PC [36:3]", "PC [36:4]", "PE [32:1]", "PE [34:1]", 
                                                                                                                                                     "PE [34:2]", "PE [36:1]", "PE [36:2]", "PE [36:3]", "PG [32:1]", 
                                                                                                                                                     "PG [34:1]", "PG [34:2]", "PG [36:2]", "PG [36:3]"), class = "factor"), 
                          rep = c("pH 5.5 1", "pH 5.5 1", "pH 5.5 2", "pH 5.5 2", "pH 5.5 3", 
                                  "pH 5.5 3", "pH 6 1", "pH 6 1", "pH 6 2", "pH 6 2", "pH 6 3", 
                                  "pH 6 3", "pH 7 1", "pH 7 1", "pH 7 2", "pH 7 2", "pH 7 3", 
                                  "pH 7 3", "pH 7.5 1", "pH 7.5 1", "pH 7.5 2", "pH 7.5 2", 
                                  "pH 7.5 3", "pH 7.5 3"), num = c(0.004633127, 0.04514786, 
                                                                   0.009330446, 0.032803203, 0.016920389, 0.045960156, 0.017778907, 
                                                                   0.028992327, 0.023182626, 0.03861396, 0.023031255, 0.04358965, 
                                                                   0.007902522, 0.01725995, 0.005021786, 0.018188753, 0.006793196, 
                                                                   0.032270599, 0.007153489, 0.06383629, 0.017068877, 0.026518865, 
                                                                   0.014697648, 0.02748779), groups = c("Ph", "Ph", "Ph", "Ph", 
                                                                                                        "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", 
                                                                                                        "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph", "Ph"
                                                                   )), row.names = c(NA, -24L), class = c("tbl_df", "tbl", "data.frame"
                                                                   ), .Names = c("type", "lipids", "rep", "num", "groups")) 

这是我到目前为止的代码:

ph7 <- df1
ph7$rep<-sub("X","",ph7$rep)
ph7$rep<-sub("\\d$","",ph7$rep)
ph7$rep<-sub("\\.$","",ph7$rep)
ph7 <- ph7 %>% group_by(type, lipids, groups, rep)%>% summarise_all( funs(mean(.)))

pos1 <- data.frame(x1=c(0.8),
                         x2=c(1.0),
                         y1=filter(ph7, grepl('pH 7 ', rep))$num[1],
                         y2=filter(ph7, grepl('pH 7 ', rep))$num[1],
                         label=filter(ph7, grepl('pH 7 ', rep))$type[1])
pos6 <- data.frame(x1=c(1.0),
                         x2=c(1.2),
                         y1=filter(ph7, grepl('pH 7 ', rep))$num[2],
                         y2=filter(ph7, grepl('pH 7 ', rep))$num[2],
                         label=filter(ph7, grepl('pH 7 ', rep))$type[2])

ggplot(df1, aes(x = factor(lipids), y= num, col = type)) + 
  geom_point(size = 0.4, position = position_dodge(width = 0.3))+
  geom_segment(aes(x=x1,y=y1,xend=x2,yend=y2,colour=label),lwd=1,data=pos1, col = "grey50") +
  geom_segment(aes(x=x1,y=y1,xend=x2,yend=y2,colour=label),lwd=1,data=pos6, col = "grey50") + 
  scale_color_manual(name = "",values = c( "red","grey50"),labels=c( "SHC","WT"))+ 
  scale_linetype_manual("mean",values=c("mean"=2))+
  theme(legend.title=element_blank())

What I want is a plot below, with fixed legend. enter image description here


您需要做的就是在 geom_segment 的 aes 部分添加 linetype = "mean":

  ggplot(df1, aes(x = factor(lipids), y= num, col = type)) + 
  geom_point(size = 0.4, position = position_dodge(width = 0.3))+
  geom_segment(aes(x=x1,y=y1,xend=x2,yend=y2,colour=label, linetype = "mean"),lwd=1,data=pos1, col = "grey50") +
  geom_segment(aes(x=x1,y=y1,xend=x2,yend=y2,colour=label, linetype = "mean"),lwd=1,data=pos6, col = "grey50",) + 
  scale_color_manual(name = "",values = c( "red","grey50"),labels=c( "SHC","WT"))+ 
  scale_linetype_manual("mean",values=c("mean"=1))+
  theme(legend.title=element_blank())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以为 geom_point 和 geom_segment 添加图例? 的相关文章

  • 在 R 中索引数据帧

    再会 我不明白这里的主题 就像它有效但我不明白为什么 我有这个数据库 planets df is pre loaded in your workspace Use order to create positions positions lt
  • 如何替换R中的“意外转义字符”

    当我尝试从 Facebook URL 的字符对象解析 JSON 时 我收到 fromJSON data 中的错误 位置 130 处出现意外的转义字符 o 看一下这个 library RCurl library rjson data lt g
  • 如何使用 ggplot2 绘制 NA 间隙

    在 R 的基本绘图中 如果数据系列 ggplot2 中存在 NA 则会绘制间隙 举个例子看看 df data frame x c 1 10 y c 1 10 df 5 7 NA plot df type l 但是 ggplot2 删除了缺失
  • 指定生存图的自定义时间点

    我正在努力使用以下方法创建生存 累积事件图ggsurvplot函数从survminer包裹 我想为我的绘图指定自定义时间点 但我不知道该怎么做 这xlim and break x by参数有点帮助 但它们创建了均匀间隔的时间点和比我想要的更
  • R 和 Python 中 LU 分解结果不一致

    我有以下矩阵A in R 1 2 3 4 1 1 1527778 0 4444444 0 375 0 3333333 2 0 5555556 1 4888889 0 600 0 3333333 3 0 6250000 0 4000000 1
  • Mac OS X 10.13 上的 RStudio 在尝试使用 fix() 时出现 X11 不可用错误

    我已经使用自制程序在我的计算机上安装了 XQuartz 然后重新启动了我的计算机 当我尝试在 RStudio 中使用 fix 命令时 出现以下错误 gt College read csv College csv header T na st
  • 如何拆分 data.frame -> 将合并应用于子集 -> 合并到 data.frame 中

    我真的不知道如何在不使用 for 循环的情况下实现这一目标 x lt c a b c d gt x 1 a b c d data lt data frame x c a b a b c a a b c d name c one one tw
  • R.scale() 和 sklearn.preprocessing.scale() 之间的区别

    我目前正在将数据分析从 R 转移到 Python 当在 R 中缩放数据集时 我将使用 R scale 根据我的理解 它将执行以下操作 x mean x sd x 为了替换该函数 我尝试使用 sklearn preprocessing sca
  • rowSums 全部 NA [重复]

    这个问题在这里已经有答案了 df lt data frame a c 1 1 NA 0 1 0 b c 0 1 NA NA 0 1 c c NA 0 NA 0 1 NA d c 1 NA NA 1 1 0 rowSums df 1 NA N
  • 替换向量中非 %in% 向量的值

    简短的问题 我可以像这样替换某些变量值 values lt c a b a b c a b df lt data frame values 将 df values 的所有值替换为 x 其中值是neither a 或 b 输出应该是 c a
  • 如何在R中绘制仪表图表?

    如何在 R 中绘制以下图 Red 30 Yellow 40 Green 30 Needle at 52 所以这里有一个完整的ggplot解决方案 注意 从原始帖子中编辑 在仪表中断处添加数字指示器和标签 这似乎是OP在评论中所要求的 如果不
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 如何在 switch 语句中将向量作为参数传递

    我对问题的谷歌搜索没有返回有用的结果和文档 switch没有告诉我如何做 所以我希望我能在这里得到答案 假设我有一个向量 cases lt c one two three 我想使用 switch 语句并将这些元素作为 switch 语句的参
  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • 自定义 colorRampPalette 中的颜色条

    我定义了一个 colorRampPalette my colors colorRampPalette c light green yellow orange red 如何为其绘制颜色条 图例 项目 最好仅使用基本包 我正在寻找一个充满该颜色
  • Openxlsx 多次验证损坏输出文件

    我正在尝试添加多个验证并将公式添加到 Excel 文件 这是我使用的代码 library openxlsx fileTemplate lt New01 xlsx wbTemplate lt loadWorkbook fileTemplate
  • 选择一个单元格内的最小值或最大值(分隔字符串)

    我有一个数据框 其中每个样本的列可以有多个值 例如 Gene Pvalue1 Pvalue2 Pvalue3 Beta Ace 0 0381 0 00357 0 01755 0 001385 0 0037 NA 0 039 0 03 1 1
  • 绘制具有数据子集的图层时,因子水平的顺序会发生变化

    我试图控制图例中项目的顺序ggplot2我查找了其他一些类似的问题 并发现了如何更改我正在绘制的因子变量的水平顺序 我正在绘制 12 月 1 月 7 月和 6 月 4 个月的数据 如果我只对所有月份执行一个绘图命令 它会按预期工作 图例中排
  • 使用 purrr::map() 更改和分配新变量名称

    我刚刚开始掌握编写函数并使用 lapply purrr map 使我的代码更加简洁 但显然还没有完全理解它 在我当前的示例中 我想重命名 lm robust 对象的系数名称 然后更改 lm robust 对象以合并新名称 我目前这样做 li
  • 如何融合颜色和形状?

    当我有一个超过 6 个值的变量时 我的麻烦就开始了 因为这是 ggplot2 中 scale shape 函数的当前最大值 由于这个问题 我尝试使用另一个变量来解决这个问题 我只是将原始变量的长度包裹起来 这是我的示例代码 dataf lt

随机推荐

  • 绘制一天内具有不同时间戳和 datetime.time 格式的时间序列

    我有两个包含温度和光传感器读数的数据集 测量时间为 22 35 41 04 49 41 此数据集的问题在于 当从一天到另一天 22 35 41 04 49 41 进行测量时 要根据 datetime date 格式绘制测量值 绘图功能自动从
  • 如何反转 SQL Server 2008 中的字段

    如何反转 SQL Server 2008 中的字段 select reverse abcdef fedcba 1 row s affected
  • IE 中文本大小列表的实际像素是多少?

    与 IE 中的以下文本大小列表相比 实际字体大小 以像素为单位 是多少 Largest Larger Medium Smaller Smallest 在 Web 应用程序中 我需要提供类似的行为 通过选择上面列表中的任何一个来设置应用程序控
  • 将 FFTW 链接到 Android NDK 应用程序

    我目前正在编写一个流派分类应用程序 作为我计算机工程的最后一年项目 我最初用 C 语言编写了特征提取代码 实现 FFTW 现在我需要通过 NDK 在 Android 上实现它 这是我的第一个 NDK 项目 所以我仍在掌握一些东西 但我已经根
  • 如何在linux中包含python模块?

    我发现了这个 xgoogle python 模块http github com pkrumins xgoogle http github com pkrumins xgoogle 很有意思 我到底应该如何在 Linux 中包含或安装这些文件
  • 单个模块/函数等有超过 1 个文档字符串吗?

    我正在使用 python 3 1 是否可以为单个模块或函数创建超过 1 个文档字符串 我正在创建一个程序 并且打算拥有多个文档字符串 每个文档字符串都有一个类别 我打算向其他人提供该程序 以便他们可以使用它 并且为了让程序员和非程序员都轻松
  • 如何在 Quickblox iOS SDK 中检查会话是否有效或过期?

    我知道 任何会话在向 Quickblox 服务器发出最后一个请求 2 小时前发出 后都会过期 当我创建会话时 我能够找到 QBBaseModule sharedModule tokenExpirationDate但我不确定它是如何工作的以及
  • PHP:通过引用可变长度参数列表?

    是否可以创建一个 PHP 函数 该函数采用可变数量的参数 所有参数均通过引用 它对通过引用接收值数组的函数和将其参数包装在对象中的函数没有帮助 因为我正在研究函数组合和参数绑定 也不要考虑调用时间传递引用 那东西根本不应该存在 PHP 5
  • 如何在laravel中使用shift-jis编码导出csv文件?

    我在用laravel excel https laravel excel com 导出 csv 文件 要导出 代码如下 return Excel download new Export results header test csv Exp
  • 为什么我的关系表会抛出 OutOfMemoryError?

    我正在使用 iReport 构建 jaspersoft 报告 并使用 Fishbowl 作为我的 DBMS 我构建了我的表 在 iReport 中显示我的表是相关的 但由于某种原因它会抛出错误并且不会运行 应该很简单 我正在输入邮政编码 日
  • 使用 PathCollections 的图例

    我正在使用集合绘制圆圈组 但无法生成三个类别的图例 我想 第 1 类 红色圆圈 类别 2 蓝色圆圈 第 3 类 黄色圆圈 import matplotlib import matplotlib pyplot as plt from matp
  • 在我的应用程序中包含 jpeg 插件

    我制作了一个加载 jpeg 文件的 Qt GUI 应用程序 在我安装了 QtSDK 4 7 3 的开发系统 Win7 上 它可以工作 当我将应用程序和一些必需的 dll 如 QtGui4 dll 等 移动到另一个未安装 QtSDK 的系统时
  • 将多个数据帧合并为一个扩展帧

    我有一个数据帧列表 其中每个帧都包含单个系统的相同类型的测量值 例如 system1 file cumSize cumloadTime query1 1 data data1 dat 100000 158 1000 0 4333333 2
  • 动态加载和动态链接的区别?

    例程在被调用之前不会被加载 所有例程都以可重定位加载格式保存在磁盘上 主程序被加载到内存中并被执行 这称为动态链接 为什么这称为动态链接 不应该是动态加载吗 因为在动态加载中调用例程之前不会加载 而在动态链接中 链接会推迟到执行时 此答案假
  • 使用 python 登录 quora

    我尝试使用 python 登录 quora 但它给了我以下错误 urllib2 HTTPError HTTP Error 500 Internal Server Error 到目前为止 这是我的代码 我也在代理后面工作 import url
  • 如何在 FSharp 中对数组的 XML 序列化

    这就是我要找的
  • Git分支没有跟踪信息

    git pull 之后我得到这个输出 There is no tracking information for the current branch Please specify which branch you want to merge
  • 如何在 NSIS 中使用 try catch

    您好 我在安装时在 nsis 安装程序中的几台机器上遇到了奇怪的错误 使用 fontreg nsh 安装字体时给出 无效的 win32 文件句柄 我试过谷歌但没有得到这个问题的答案 现在我正在考虑抑制此消息 那么有什么方法可以抑制此消息 或
  • 数据绑定 Kendo UI 网格后保留展开的行

    这是我第一次使用 Kendo UI 我有一个带有子节点的 Kendo UI 网格 我想在数据绑定后保留扩展的行 现在 在子项中添加一行后 它会折叠起来 我尝试过来自的建议here https stackoverflow com questi
  • 是否可以为 geom_point 和 geom_segment 添加图例?

    我想知道是否可以添加图例geom point and geom segment 从 geom point 我自动获取图例 但是我不知道如何添加图例geom segment 我努力了scale linetype manual但显然它不起作用