将顶点大小与 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 中的标签大小匹配 的相关文章

  • 如何在不指定数据集的情况下调整函数

    我有一个函数 基本上可以过滤SPV行 如下所示 请注意 我这样做return coef lt function df1 idd dmda CategoryChosse 然而 我不希望df1作为函数的参数 而是函数的属性df1数据集 在本例中
  • 如何找到对象的创建位置?

    我目前正在努力改进对其他脚本有不同调用的代码 我想知道在哪里创建对象 对于其中一些人来说 只需使用文本编辑器的搜索选项即可 只要看看是否obj lt or obj 有什么结果 但这不适用于使用assign功能 在加载的脚本中创建的也不是 T
  • data.frame 按列分组[重复]

    这个问题在这里已经有答案了 我有一个数据框 DF 说 DF 是 A B 1 1 2 2 1 3 3 2 3 4 3 5 5 3 6 现在我想将 A 列的行组合在一起 并得到 B 列的总和 例如 A B 1 1 5 2 2 3 3 3 11
  • 评估 R 中字符串指向的函数

    假设我有以下内容 x lt 1 10 squared lt function x x 2 y lt squared 我希望能够使用 y 定义的字符串来评估该函数 像 eval y 这样的东西 我知道这是错误的 但会返回 1 1 4 9 16
  • 将线条剪裁到绘图区域并在绘图区域外显示文本

    我想限制绘图的可见 y 范围 为了保留超出此范围的值 我需要设置oob 出界 to rescale none这效果很好 不过 我还想在图外的页边空白处添加一些文本 为了做到这一点 我需要关闭剪辑 这会导致超出范围的值被绘制在绘图区域之外的边
  • 使用 geom_bar 和 stat="identity" 绘制平均值的 hline

    我有一个条形图 其中确切的条形高度位于数据框中 df lt data frame x LETTERS 1 6 y c 1 6 1 6 1 g rep x c a b each 6 ggplot df aes x x y y fill g g
  • 替换为 NA

    我有一个包含条目的数据框 看来这些值没有被视为 NA 因为 is na 返回 FALSE 我想将这些值转换为 NA 但找不到方法 Use dfr dfr
  • 匹配向量内的向量

    I have vec1 lt c 0 0 0 1 1 0 1 1 1 0 0 1 vec2 lt c 1 1 我预计 magicFUN x vec1 y vec2 1 4 7 8 这意味着我想要一个完整向量在另一个向量内的位置 match
  • 为闪亮的应用程序创建桌面图标

    当我在基本 R 提示中提供以下代码时 我会在浏览器中打开一个闪亮的应用程序 shiny runApp C Myapp 我使用 Windows 7 我试图创建一个桌面图标 以避免我的客户每次想要使用该应用程序时都键入上述代码 我创建了一个桌面
  • corr.test 与 cor.test p 值

    我正在尝试使用 psych 包 psych 1 6 9 中的 corr test 但在使用 method spearman 时 它似乎给出了与 cor test 不同的 p 值 相关系数相同 但 p 值不同 我整理了一些示例代码和输出 如下
  • 将 R 传单地图保存为 html:不包括图块

    我正在尝试使用 saveWidget 或将 rmd 文件输出到 html 来保存 R 传单地图 如下所述 将传单输出保存为 html https stackoverflow com questions 30110377 saving lea
  • R:使用 as.formula 修复模型中的模型调用

    我有一个gls模型 其中我将公式 来自另一个对象 分配给模型 equation lt as formula aic obj row model gt equation temp avg I year 1950 mod1 lt gls equ
  • R 中整数向量的大小

    我原以为 R 有一个用于存储对象的标准开销 看起来是 24 字节 至少对于整数向量而言 但一个简单的测试表明它比我意识到的要复杂 例如 采用长度为 100 的整数向量 使用随机采样 希望避免任何可能存在的偷偷摸摸的序列压缩技巧 https
  • 是否可以在 R 中创建自定义 pch 形状?

    R 中的许多绘图函数都使用图形参数pch指定数据点的形状 根据R 文档 https www rdocumentation org packages graphics versions 3 6 2 topics points 有 26 个矢量
  • 当 header=TRUE 时 read.fwf 出错

    我的模拟数据如下所示 LastName Date email CreditCardNum AgeZip Amount Paul 21 02 14 email protected cdn cgi l email protection 4241
  • 如何在 ggplot2 中向 x 轴添加特定值?

    我正在尝试在 ggplot2 中绘制图表 我希望 x 轴显示 2 84 以及下面键入的序列 除了在 Breaks 中输入所有精确值之外 还有其他方法吗 我尝试了谷歌 但它没有解决我的问题 scale x continuous limits
  • 根据第二个数据帧中的匹配创建新列

    如果有两个数据框 top3df http dpaste com 1709875 and qw qw lt structure list id structure 1 25 Label c w01 w02 w03 w04 w05 w06 w0
  • R 中的频率加权,与 Stata 的结果比较

    我正在尝试分析明尼苏达大学 IPUMS 数据集中的数据1990 年美国人口普查 http usa ipums org usa sampdesc shtml us1990a in R 我正在使用survey http faculty wash
  • R 中的微秒时间戳

    在 CSV 文件中 我有几列 其中一列有时间戳 其中每个时间戳是今天午夜经过的微秒 每个 csv 文件仅包含一天内的数据 因此这并不含糊 我的问题是 如何将这些微秒时间戳解析为 R 多谢 我的 CSV 文件的一部分 34201881666
  • 使用 ggplot2 在一张画布上绘制多个图形[重复]

    这个问题在这里已经有答案了 我正在尝试根据此表将两个 ggplot2 图合并为一个图 Type RatingA RatingB 1 One 3 36 2 Two 5 53 3 One 5 57 4 One 7 74 5 Three 4 38

随机推荐

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

    给定一个包含一堆整数元素的元组 如何找到所有元素的总和 例如 如果我有一个元组列表 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 执行此操作的最佳方法是什么 编辑 更多信息 代