将顶点大小与 igraph 中的标签大小匹配

2023-11-23

我正在尝试使用 R 中的 igraph 绘制小型网络。网络中的每个顶点都有一个名称,相当于其标签。我想让每个顶点都有一个矩形符号,该符号足够大以适合其标签。

这是我的主要灵感。

Map of Hyperboria

使用 igraph 执行此操作的最佳方法是什么?

编辑:更多信息

代码是here

jsonToNM <- function(jfile, directed=TRUE) {
  # Requires "rjson" and "igraph"

  nm.json <- fromJSON(file=jfile)
  nm.graph <- c()

  # Initialize the graph with the given nodes
  g <- graph.empty(n=length(nm.json), directed=directed)
  # Add their names
  V(g)$name <- names(nm.json)
  V(g)$label <- V(g)$name

  # Now, add the edges
  for(i in 1:length(nm.json)) {
    # If the node has a "connected" field,
    # then we note the connections by looking
    # the names up.
    if(length(nm.json[[i]]$connected > 0)) {
      for(j in 1:length(nm.json[[i]]$connected)) {
        # Add the entry
        g <- g + edge(names(nm.json)[i],
                        nm.json[[i]]$connected[j])
      }
    }
  }

  plot(g, vertex.label.dist=1.5)
}

当前输出如下。

current output

我的目标是将标签放置在顶点图形内部,并扩展顶点的宽度以容纳标签。


这是一个例子。在一些肮脏的技巧(即将顶点大小乘以 200)中,关键是使用两个绘图命令,以便我们可以测量标签的宽度(和高度)strwidth(),在使用第一个(空)绘图设置绘图大小后。

library(igraph)
camp <- graph.formula(Harry:Steve:Don:Bert - Harry:Steve:Don:Bert,
                      Pam:Brazey:Carol:Pat - Pam:Brazey:Carol:Pat,
                      Holly   - Carol:Pat:Pam:Jennie:Bill,
                      Bill    - Pauline:Michael:Lee:Holly,
                      Pauline - Bill:Jennie:Ann,
                      Jennie  - Holly:Michael:Lee:Ann:Pauline,
                      Michael - Bill:Jennie:Ann:Lee:John,
                      Ann     - Michael:Jennie:Pauline,
                      Lee     - Michael:Bill:Jennie,
                      Gery    - Pat:Steve:Russ:John,
                      Russ    - Steve:Bert:Gery:John,
                      John    - Gery:Russ:Michael)

V(camp)$label <- V(camp)$name
set.seed(42)   ## to make this reproducable
co <- layout.auto(camp)

plot(0, type="n", ann=FALSE, axes=FALSE, xlim=extendrange(co[,1]), 
     ylim=extendrange(co[,2]))
plot(camp, layout=co, rescale=FALSE, add=TRUE,
     vertex.shape="rectangle",
     vertex.size=(strwidth(V(camp)$label) + strwidth("oo")) * 100,
     vertex.size2=strheight("I") * 2 * 100)

igraph vertex label width

顺便提一句。这对于 SVG 图形来说并不能很好地工作,因为无法测量 R 中文本的宽度,SVG 设备只能进行猜测。

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

将顶点大小与 igraph 中的标签大小匹配 的相关文章

  • 在函数内部调用 clusterApply 时,性能会下降

    我遇到了一个奇怪的问题clusterApply 我已经能够尽可能地隔离它 如下所示 首先 我从全局环境运行以下代码 require parallel cl lt makeCluster rep localhost 20 SOCK xl lt
  • dplyr,do(),从模型中提取参数而不丢失分组变量

    R 帮助中关于 do 的示例略有不同 by cyl lt group by mtcars cyl models lt by cyl gt do mod lm mpg disp data coefficients lt models gt d
  • 如何在 R 中为传单中的数值变量设置不对称颜色渐变

    我想让传单调色板以零为中心 红白绿发散 我已经尝试过中所说的这个帖子 https stackoverflow com questions 29262824 r center color palette on 0 当我尝试手动创建颜色时 我得
  • 如何获得属于五分位数的x?

    我正在大学学习使用 R 进行计量经济学项目 所以请原谅我的笨拙 基本上 使用并给出 一个矩阵 股票价格 行 天 列 公司股票价格 另一个矩阵 市值 行 天 列 公司市值 我必须收集第三个矩阵每天观察的属于市值分布第一五分位数的股票价格 然后
  • R:将 readRDS 应用于 .Rds 文件名的列表对象

    我有几个包含数据帧对象的 Rds 文件 我想对每个文件应用一个函数并将数据帧绑定到单个数据帧中 但是 当我尝试从文件名列表中读取多个 Rds 文件时 我收到错误 FUN X i 中的错误 从连接读取时出错 readRDS 不适用于列表吗 R
  • 将 VLMC 拟合到很长的序列

    我正在尝试将 VLMC 拟合到最长序列为 296 个状态的数据集 我这样做如下所示 Load libraries library PST library RCurl library TraMineR Load and transform d
  • 将 sf voronoi 多边形裁剪到边界框时出错

    我正在尝试将 voronoi polygons 使用 sf package 创建 剪辑 到边界框 但它引发了我无法定义的错误 我对 R 的空间世界不太有经验 感谢所有帮助 样本数据 stations lt structure list ST
  • fread 将空导入为 NA

    我正在尝试导入带有空白的 csv 读取为 不幸的是他们都读作 NA now 为了更好地演示问题 我还展示了如何NA NA and 都映射到同一事物 除了最底部的示例 这将妨碍简单的解决方法dt is na dt lt gt write cs
  • 使用 R 进行项目组织 [重复]

    这个问题在这里已经有答案了 可能的重复 统计分析和报告撰写的工作流程 https stackoverflow com questions 1429907 workflow for statistical analysis and repor
  • R - 通过覆盖和递归合并列表

    假设我有两个带有名字的列表 a list a 1 b 2 c list d 1 e 2 d list a 1 b 2 b list a 2 c list e 1 f 2 d 3 e 2 我想递归地合并这些列表 如果第二个参数包含冲突的值 则
  • 如何匹配 R 中的所有匹配项?

    我有 1000 个名字的列表 说A 我还有另外 5 个名字的清单 说B 我想找出这5个名字出现在1000个号码列表中的第几行 例如 Amy 在 A 中可以出现 25 次 B 里有艾米 我想知道 Amy 出现在 A 中的哪些行 我以前使用过
  • 如何根据两个数据框中最近的日期进行匹配?

    假设我有两个数据框 例如 set seed 123 df1 lt data frame bmi rnorm 20 25 5 date1 sample seq Date as Date 2014 01 01 as Date 2014 02 2
  • 从“parallel”包中的非基础 R 包调用函数,而无需在函数中将它们库化

    假设我正在尝试运行以下代码 library gregmisc library parallel myfunction lt function x combinations 10 x 1 10 cl lt makeCluster getOpt
  • 在多行中打印带有列名称的 R 数据框

    我有一个带有长列名称的 R 数据框 所以当我打印数据框时它太宽了 有没有一种简单的方法可以将数据框打印到屏幕上 并且列名出现在多行中 我知道我可以缩短名字 但我不想这样做 当奥斯卡的答案被接受时 我想这可能真的是一个答案 不幸的是 这只是复
  • 如何匹配R中列之间的多个对应值

    我有一个结构如下的数据框 ID Value1 Value2 1 a d g f 12 14 15 9 2 b c e 5 18 20 3 h i j 6 7 25 所以我有一个 ID 和两个值 对于值 1 有多个对应于值 2 的选项 我想最
  • R中将矩阵拆分为子矩阵的函数

    我有一个 16 行 12 列的矩阵 M 我想将其拆分为 16 个矩阵的数组 每个矩阵有 4 行 3 列 我可以通过以下方式手动完成 M matrix sample 0 127 16 12 replace TRUE c 16 12 ma1 M
  • ggplot2 可视化/显示中的地图错误?

    正如您在下面看到的 我使用 ggplots 制作的地图上存在一个奇怪的显示问题 任何投影似乎都会发生同样的问题 这是代码 仅包maps and ggplot2需要 mapWorld lt borders world colour gray5
  • 在 Ubuntu Lucid 中从二进制安装 R 包

    我已经使用以下命令在 Ubuntu Lucid 中安装了 R sudo aptitude 安装 r base 当我尝试 install packages 时 它似乎会下载源代码 然后花费很长时间来编译它 我怎样才能像我在 Windows 上
  • 基于条件反应逻辑闪亮的 Flexdashboard

    我正在尝试有条件地进行一种类型的渲染 renderPlot 或其他 renderText 基于一些输入 这是我尝试过的 title Citation Extraction output flexdashboard flex dashboar
  • 如何一次导入多个 .csv 文件?

    假设我们有一个包含多个 data csv 文件的文件夹 每个文件包含相同数量的变量 但每个文件来自不同的时间 R 中有没有办法同时导入它们 而不必单独导入它们 我的问题是 我有大约 2000 个数据文件需要导入 并且必须使用以下代码单独导入

随机推荐

  • 存储在元组内的元素总和

    给定一个包含一堆整数元素的元组 如何找到所有元素的总和 例如 如果我有一个元组列表 li 1 2 1 3 2 3 我怎样才能得到这样的东西 3 4 5 其中 3 4 和 5 分别是三个元组的总和 您可以使用map and sum像这样的功能
  • 从多个 Web.config 文件访问 appSettings

    我正在设计一个 ASP NET MVC4 Web 应用程序项目 在我的项目的根目录中 我有惯用的默认值Web config文件与我相应的元素 特别是我有几个appSettings定义的元素 作为演示这一点的示例摘录
  • Kubernetes:如何增加临时存储

    我有三个主节点 每个节点的磁盘大小为 80 GB 最近我遇到了这个问题 Normal Pulling 52s x2 over 6m17s kubelet 192 168 10 37 pulling image gcr io kubeflow
  • Facebook Connect 和 HTML5、xmlns 可用吗?

    Facebook Connect 及其 社交小部件 文档提到您需要添加xmlns归因于你的将使用它的页面上的标签 我明白那个xmlns用于 XML 名称间距 并且之前已将其与 XHTML 一起使用 然而 随着最近有关 HTML4 HTML5
  • 如何首先使用 EF 代码映射现有的 sql server 视图

    我对 EF 相当陌生 首先学习 EF 代码 我正在寻找一种知识来首先使用 EF 代码映射现有的 sql server 视图 我已经用 POCO 映射了我的视图 但出现以下错误 当我尝试从视图中获取数据时抛出以下错误 附加信息 支持 Test
  • PBS_MARQUEE 进度条 WinApi

    我正在尝试让 PBS MARQUEE 类型的进度条正常工作 我可以创建进度条 但我就是无法让它移动 如果发现这个 但我不清楚我必须做什么 事实证明 由于我将进度条作为资源而不是使用 CreateWindowEx 所以我必须使用 SetWin
  • ::(双冒号)在 DOS 批处理文件中意味着什么?

    我找到了这个程序web archive org http baiyunmanor com blog work get current date time in dos batch file This uses Windows Scripti
  • JPA 标准生成器:如何按顺序替换字符串并将其转换为数字?

    有人可以建议我如何使用 JPA Criteria 构建器 API 构建以下查询吗 SELECT id name date version FROM public upgradeTable order by CAST replace vers
  • 快速计算 .numpy 数组中每 N 行的平均值

    我有一个非常大的屏蔽 NumPy 数组 originalArray 有很多行和两列 我想取每两行的平均值originalArray并建立一个newArray其中每一行是两行的平均值originalArray so newArray行数为or
  • 在 javascript 或着色器中更好地乘以矩阵?

    我一直在看几个 webgl 示例 考虑MDN 的教程 他们的顶点着色器将顶点乘以透视矩阵和世界位置矩阵 gl Position uPMatrix uMVMatrix vec4 aVertexPosition 1 0 But the uMVM
  • Java序列化-Android反序列化

    我尝试过在 Java 和 Android 之间实现跨平台序列化 我使用了 Serialized 并将 Android 中的代码与桌面 Java 中的代码放在同一个包中 来源 java desktop 序列化 Student student
  • 从 Service Fabric 集群中删除应用程序

    我尝试使用服务结构资源管理器从服务结构中删除应用程序 我使用 删除应用程序 操作删除了我的应用程序 然后 当我尝试取消配置应用程序类型时 我收到错误消息 错误 版本 1 0 0 的应用程序类型无法取消配置为 它仍然包含活动的应用程序 我可以
  • “await Task.Run(); return;”之间的任何区别和“返回Task.Run()”? [复制]

    这个问题在这里已经有答案了 以下两段代码之间是否存在概念上的差异 async Task TestAsync await Task Run gt DoSomeWork and Task TestAsync return Task Run gt
  • 计算文件中的单词数

    我在计算文件中的字数时遇到问题 我采取的方法是 当我看到空格或换行符时 我就知道要计算单词数 问题是 如果我在段落之间有多行 那么我最终也会将它们算作单词 如果您查看 readFile 方法 您就可以看到我在做什么 您能帮助我并指导我如何解
  • Monad 变压器的使用

    我正在 Haskell 书中读到有关 monad 转换器的内容 作者提到如下 莫纳德呢 组合两个任意数据类型没有问题 有 Monad 实例 我们在使用 Compose 时已经看到了这一点 Maybe 和 list 都定义了 Monad 实例
  • Github - 文件 XYZ 为 126.80 MB;这超出了 GitHub 的文件大小限制 100.00 MB

    我有一个本地存储库 其中意外添加了一个大文件 现在我落后了近 100 个提交 当我尝试推送到 GitHub 时 出现错误 我需要帮助做任何我需要做的事情才能推送这个存储库的其余部分 我不需要这个文件 可以永久删除它 旁注 这是一个包含 IP
  • RoR 预编译资产在 rake asset:precompile 时失败 - 在基本上空的 application.js 上

    Running bundle exec rake assets precompile RAILS ENV production trace Execute assets precompile primary rake aborted Typ
  • 将带重音的文本转换为 ASCII 字符?

    我想在 Javascript 中将重音字母和各种编码转换为纯英文 ASCII 编码 并想知道有哪些可能的选项 我需要的是 clair becomes eclair b r becomes bar becomes privet becomes
  • R 中的对数刻度图

    我想绘制聚类系数和平均最短 路径作为 Watts Strogatz 模型参数 p 的函数如下 这是我的代码 library igraph library ggplot2 library reshape2 library pracma p l
  • 将顶点大小与 igraph 中的标签大小匹配

    我正在尝试使用 R 中的 igraph 绘制小型网络 网络中的每个顶点都有一个名称 相当于其标签 我想让每个顶点都有一个矩形符号 该符号足够大以适合其标签 这是我的主要灵感 使用 igraph 执行此操作的最佳方法是什么 编辑 更多信息 代