ggraph的定制图例

2023-12-28

我想创建一个自定义图例。示例图例如下所示

这是我的情节

我使用 ggraph 创建了这个图。在这个情节下或在情节附近的某个地方我想要有我上面提到的图例? 有任何想法吗


从技术上讲,您要求使用另一个图作为图例。因此,我们需要安排一个网格并将该图(满足您对图例的要求)放在原始图旁边。见下文;

### packages
library(ggraph)
library(tidygraph)
library(cowplot)
library(gridExtra)

### data
df <- data.frame(
  "A" = c("N","N"),
  "B" = c("I","S"),
  "v" = c(0.25, 0) )

### plot
df %>%
  as_tbl_graph() %>%
  activate(edges) %>%
  tidygraph::filter(v > 0) %>%
  activate(nodes) %>%
  ggraph(layout = 'matrix') +
  geom_node_text(aes(label = name), size = 8,
                 nudge_x = c(0.2, 0, -0.2, -0.2, 0),
                 nudge_y = c(0.3, 0.3, 0.3, -0.3, -0.3)) +
  geom_edge_link2(aes(width = after_stat(index)), color = "red",
                  alpha = 0.5) +
  geom_node_point(size = 20) +
  scale_edge_width(range = c(0, 15), guide = 'none') +
  coord_cartesian(xlim = c(1, 3.5), ylim = c(1, 3.5)) +
  theme_void() -> p_gp
### legend
data.frame(lg1 = "Y", lg2 = "X" , P = 0.5) %>% 
  as_tbl_graph() %>%
  activate(edges) %>%
  tidygraph::filter(P > 0) %>%
  activate(nodes) %>%
  ggraph(layout = 'circle') +
  geom_node_text(aes(label = name), size = 4,
                 nudge_y = c(-0.15, -0.15, -0.15, -0.15, -0.15)) +
  geom_edge_link2(aes(width = after_stat(index)), color = "grey",
                  alpha = 0.5) +
  geom_node_point(size = 10) +
  scale_edge_width(range = c(0, 5), guide = 'none') +
  coord_cartesian(xlim = c(-1.5, 1.5), ylim = c(-1.5, 1.5)) +
  theme_void() -> p_lg

ggdraw(p_lg) +
  draw_label("Significance", y = 0.66, size = 14) +
  draw_label("X significantly", y = 0.62, size = 10) +
  draw_label("exceeds Y", y = 0.58, size = 10) +
  draw_label("(p < 0.05)",  y = 0.54, size = 10) -> p_lg
### grid
grid.arrange(p_gp, p_lg,
             ncol=2, nrow=1, widths=c(9/10,1/10))

Created on 2023-07-04 with reprex v2.0.2 https://reprex.tidyverse.org

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

ggraph的定制图例 的相关文章

随机推荐

  • 从 Netbeans 启动 Tomcat 失败

    我从 Netbeans IDE 7 4 启动 Apache Tomcat 6 时遇到问题 在 7 3 版本上我也遇到了同样的问题 其他人提到这个问题也存在于其他版本中 例如 8 0 等 我做了什么 删除已安装的Tomcat 7 不删除它 我
  • 是否有宏可以有条件地将行复制到另一个工作表?

    在 Excel 2003 中是否有宏或方法可以有条件地将行从一个工作表复制到另一个工作表 我通过 Web 查询将 SharePoint 中的数据列表提取到 Excel 中的空白工作表中 然后我想将特定月份的行复制到特定工作表 例如 将 Sh
  • 批处理脚本不运行,尽管其代码在 CMD 中运行

    我正在寻找一种简单的方法来获取以 GB 为单位的系统卷信息 批量 所以我得到了这个 for f tokens 1 3 a in WMIC LOGICALDISK GET FreeSpace Name Size FINDSTR I V Nam
  • 我应该将 useSelector 传递给 useState

    大家好 我有一个关于您喜欢哪种方法的问题 在使用 TypeScript 的 React 功能组件中 使用 useSelector 从 Redux State 获取值是 1 const campaign useSelector campaig
  • 无法将 DispatcherServlet 映射到上下文根

    这是我用于 spring mvc 的当前配置 1 web xml
  • 我的 C 程序读取一个文本文件。当我将它放入 Xcode 时,它​​失败了。发生了什么?

    我有一个打开 txt 的函数 使用 fscanf 读取格式如下的数字 532 2 234 32 当我使用 GCC 编译时它成功地做到了这一点 但我无法在 Xcode 中打开文件 为什么 相关代码是 int main void FILE in
  • 如何禁用 WinForms DataGrid 中的按钮单元格?

    我有一个 WinForms 应用程序 其中包含一个 DataGridView 控件和一列 DataGridViewButtonCell 单元格 当我单击其中一个按钮时 它会启动一项后台任务 我想禁用这些按钮 直到该任务完成 我可以禁用 Da
  • Gekko 长期性能

    在下面的代码中 全年 PV 斜率优化 每小时时间步长 CSV 数据下载link https drive google com file d 172HaD87t9V PDElMER4MwDaWyuCZ3KA5 view usp sharing
  • 如何在使用rescue_from时使用Rails4和RSpec测试渲染状态:404

    我有一个带有 PagesController 的 Rails4 应用程序 当找不到页面时 show method 会抛出自定义异常 PageNotFoundError 在我定义的控制器之上rescue from PageNotFoundEr
  • 转换输出中不需要的字符编码转换

    我这里有一个情况 JAVA版本1 6 Linux RH 5 6 Tikanga Windows 7 Cygwin最新版本 等级 1 6 在一台机器 Linux 上 当我运行 Gradle 构建时 我得到生成的 xsl 文件 这些文件与我运行
  • iOS:Objective-C 中的事件监听器相当于什么?

    在我的一些学习中 我看到有人提到 在视图控制器中 您可以拥有一个模型 并在模型上有某种监听器来监听其中的变化 我认为我没有使用正确的名称 这可能就是为什么我的搜索没有找到任何结果的原因 本质上 我想将服务器调用从控制器移到我的模型中 但我需
  • 使用 Netty 的多线程 UDP 服务器

    我正在尝试使用 Netty 实现 UDP 服务器 这个想法是只绑定一次 因此只创建一个Channel This Channel仅使用一个处理程序进行初始化 该处理程序通过一个线程在多个线程之间分派传入数据报的处理ExecutorServic
  • Google Drive API 使用浏览器版本创建空的“无标题”文件

    我正在尝试使用 Google Drive API 的 浏览器 版本 它似乎主要遵循 Nodejs 语法 但除了浏览器的第一个 hello world 示例之外 似乎没有太多示例 现在我正在尝试创建一个文件夹 然后在该文件夹内创建一个简单的
  • 当任务计划程序启动时隐藏 C# 控制台应用程序窗口

    我已经在谷歌上搜索了这个并阅读了一些资源 但我无法找到一个好的答案 有谁知道如何防止控制台应用程序窗口在任务计划程序启动时打开 Ref 改变output type to Windows application会解决你的问题 转到 项目 gt
  • 从 XAML 中的 *.resx 文件获取值

    是否可以将资源文件中的某些值直接添加到 XAML 标记中 或者为了本地化 我们总是必须在 cs 文件中制作类似的内容 txtMessage Text Messages WarningUserMessage Where Messages是资源
  • Python、Pandas:使用 GroupBy.groups 描述将其应用于另一个分组

    让我们考虑一个 DataFrame 它在 2010 年 1 月的每一天包含 1 行 2 个值 date range pd date range dt 2010 1 1 dt 2010 1 31 freq 1D df pd DataFrame
  • 如何从 DQL 查询返回对象?

    我在原则 2 中编写了一个 DQL 查询 qb gt select r position gt from Entities Races r gt where qb gt expr gt eq r entrantId entrant id g
  • 如何使用 GraphicsPath 绘制形状来创建自定义控件的区域?

    我目前正在尝试覆盖OnPaint 我正在构建的自定义控件的方法 该对象只是一个简单的面板 但我试图让它看起来不同类型的方式 如下所示 我正在使用 GraphicsPath 来帮助我尝试完成此任务 但它的外观 行为并不像我预期的那样工作 因为
  • Node.js Mongoose.js 字符串到 ObjectId 函数

    是否有一个函数可以使用 mongoose 将字符串转换为节点中的 objectId 架构指定某物是一个 ObjectId 但是当它从字符串保存时 mongo 告诉我它仍然只是一个字符串 例如 对象的 id 显示为objectId blah
  • ggraph的定制图例

    我想创建一个自定义图例 示例图例如下所示 这是我的情节 我使用 ggraph 创建了这个图 在这个情节下或在情节附近的某个地方我想要有我上面提到的图例 有任何想法吗 从技术上讲 您要求使用另一个图作为图例 因此 我们需要安排一个网格并将该图