问题标签 [tidygraph]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
232 浏览

r - 用 tidygraph 从孩子那里传播价值

我有一棵在属级别注释的树(即每片叶子都有一个名字),只要孩子们有相同的属,我想传播树枝/边缘叶子的颜色,就像在这个情节中一样:

在此处输入图像描述

资源

我的树在这里(对不起,dput不起作用......),他看起来像这样:

我可以使用此代码打印树,但如您所见,边缘颜色保持在叶子附近。

在此处输入图像描述

映射博客文章的搜索部分中有一个代码,但它不适用于我的数据,我不明白为什么......

mutate_impl(.data, dots) 中的错误:评估错误:无法将值强制转换为字符 (1)。

在 Marco Sandri 回答后编辑

mutate(Genus = as.character(Genus))没有更多错误消息,但 Genus 没有正确传播。例如,从右侧开始查看第三个和第四个节点:父节点应该是NA...(请注意,它在博客文章图中也不起作用)。

在此处输入图像描述

0 投票
1 回答
812 浏览

r - 如何在ggraph中隐藏未连接的节点

给定以下示例代码,

如何隐藏没有边缘进入或离开节点的节点?

0 投票
1 回答
593 浏览

r - 简化树删除节点

我有一个可以被认为是树的非循环图。这是一个简化的示例:

是

现实生活中的例子可能稍微复杂一些,因为我可能有多个从叶子到根的路径(所有这些路径都是非循环的)。

我想通过删除中间节点来简化图形,如下所示:

K=0

在最极端的情况下(我们称之为“k = 0”简化)我会枚举所有叶子,确保它们通过深度优先搜索连接到根,然后删除所有中间连接,有效地将每个叶子连接到根。

K=-1

下一级简化(比如“k=-1”)我想从至少有一个叶子孩子的节点开始,然后重复相同的过程。简化后,所有中间节点都会被移除:

想

K=-2

下一步的简化对这个图没有意义,因为不会修改边,也不会删除节点。

如何在 R 中使用igraph/对其进行编码?tidygraph

0 投票
2 回答
3286 浏览

r - 绘制特定 geom_node_text 的标签

我正在尝试绘制网络图并仅显示 geom_node_text 的标签,这些标签的中心度得分高于特定阈值。我的代码如下:

我遇到以下错误:

我的数据如下所示:

0 投票
2 回答
790 浏览

r - 通过使用 tibble 中不同行的值来改变值

我想计算一个节点到根的距离dtr。我所拥有的只是一个向量,其中包含每个节点的父节点 ID rel(在此示例id == 7中为根节点):

最后我正在寻找这个结果:

tmp$dtr

[1] 2 1 3 2 3 4 0 1 3 2 1 1

到目前为止,我能够编写以下算法,直到我在尝试引用代码中的不同行时卡住了。

该算法应该像这样工作(伪代码):

  1. 如果不是根,则递增dtrif(!equals(tid,trel)): dtr = dtr+1
  2. 更改tidtreltid = trel
  3. 更改trelrel其中的值id == trel
  4. 如果有任何!equals(tid,trel)GOTO 1.,否则 END

首先,我添加了 2 个辅助列来存储临时信息:

算法的前两个步骤是这样工作的:

第三步我不确定....我尝试使用以下代码来实现它,但这不起作用:

结果(当然)是错误的:

tmp$rel

[1] 7 7 7 7 7 7 7 7 7 7 7 7

但为什么不呢?(3.第一次运行时应该是正确的解决方案):

[1] 2 7 2 7 2 4 7 7 10 8 7 7

第 4 步是通过检查我在 trel 中是否有多个唯一值来完成的:

因此,完整的算法应该看起来像这样:

知道如何解决这个问题或更简单的解决方案吗?提前致谢!

0 投票
1 回答
919 浏览

r - 如何将 as_tbl_graph() 与 group_by() 一起使用?

这是我最近遇到的关于计算图深度的问题的后续问题。这涉及到 tidyverse 和 tidygraph。在阅读 tidygraph 之后,我觉得我应该好好尝试一下,但我在工作流程中遇到了一个新问题。

使用dplyrgroup_by()中的动词为每个组创建图形时,tidygraph 中的函数不是我想要的,但我找不到按预期设置和值的方法。这是一个可重现的示例:guess_df_type()as_tbl_graph()fromto

结果是:

节点不是取自 token 列,而是取自id_headid_sec

在进一步研究之后,我将其重命名为tokenand ,这至少解决了第一个问题:headfromto

结果:

让我进一步阐述我遇到的问题。当我尝试在图中使用 group_by(id_head,id_sec) 时,结果是一个错误:

grouped_df_impl(data, unname(vars), drop) 中的错误:

id_head未知

所以无论哪种方式,我都不明白如何将 group_by 与 tidygraph 一起使用。很感谢任何形式的帮助!提前致谢。

另外,很抱歉使用 igraph 作为标签,它应该是 tidygraph,但它还不存在。tidygraph 是建立在 igraph 和 tidyverse 之上的。

0 投票
1 回答
255 浏览

r - Reshaping a data frame with a list column produced by tidygraph

I am working with the tidygraph package and try to find a "tidy" solution for the example below. The problem is not really tied to tidygraph and more about data wrangling but I think it is interesting for people working with this package.

In the following code chunk I just generate some sample data.

The resulting data.frame looks as follows:

Now to my actual problem. I want do apply a function to each element in the column graph. The result is simply a named vector.

The first thing I do not like is the subsetting by $. Is there a better way?

Next, I want to reshape this result into only one data.frame with 3 columns. One column for name (the name attribute of the vectors), one for group (the name attribute of the list) and one for the number (the elements of the vectors).

I tried melt from the reshape2 package.

It works decently but the names are lost and as I read it, one should use tidyr instead. However, I could not get gather to work because only data.frames are accepted.

Another option would be unlist:

Here the group and the name are in the names attribute and I would have to recover them with regular expressions.

I am pretty sure there is an easy way I just could not think of.

0 投票
1 回答
486 浏览

r - R中的3D管道/管图 - 创建树根图

我正在尝试在 R 中创建模拟树根的 3D 图。这是一个根系统随时间增长的示例:

图 1

这本质上是一个 3D 圆柱网络,其中圆柱直径(以及可选的颜色)表示根的大小。可用数据包括:

  • 根质心的 x, y, z
  • “父”根的方向(例如 +x、-x、+y、-y、+z、-z),尽管可以通过几种不同的方式捕获此信息,包括通过计算父级的 x、y、z直接在绘图之前。
  • 根的大小

示例 3D 数据在这里,但这是我第一次尝试在 2D 中使用ggplot2::geom_spoke

在此处输入图像描述

我更喜欢基于ggplot2框架的解决方案,但我意识到ggplot2. ggraph一种有趣的方法可能是通过和tidygraph包创造性地利用网络图的概念。据我所知,虽然这些包仅在 2D 中运行,但他们的开发人员也有一些有趣的 3D 相关想法,也可以应用。

中的rgl库似乎是 R 中 3D 绘图的首选,但rgl解决方案似乎要复杂得多,并且缺乏 的其他好处ggplot2,例如示例中的按年份分面,轻松调整比例等。

示例数据在这里:

0 投票
1 回答
1843 浏览

r - tidygraph 和 igraph - 从数据帧差异构建图形

我可以毫无问题地从两个数据帧在 igraph 中构建图形对象。当我尝试在 tidygraph 中做同样的事情时,我得到了错误。让我演示一下。首先我加载我的源数据(来自留言板的数据):

接下来,我创建一个唯一的节点列表(在留言板上发布内容的人):

然后,我的边缘列表(通过讨论线程(主题)连接的人):

使用 igraph 我可以创建这个图形对象:

这看起来不错。现在我尝试对 tidygraph 做同样的事情:

哎呀!但是,当我将 igraph 对象导入 tidygraph 时:

所有作品!到底是怎么回事?请帮忙。

0 投票
1 回答
383 浏览

r - Tidygraph:在父级计算子摘要

使用 R 中的 tidygraph 包,给定一棵树,我想计算树中每个节点的每个直接子节点的值的平均值、总和、方差......。

我的直觉是使用map_bfs_back_dbl或相关并尝试修改帮助示例,但被卡住了

对于上述内容,我想要value树中每个父级的所有直接、第一级子级的平均值。

更新:: 我试过这种方法(计算子属性的方差):

这是该死的:

我想看到的是这样的:

它将(第一个)“var”值移动到由“父”值标识的节点。帮助?建议?

编辑:这就是我最终要做的事情:

感觉不是很整洁,但似乎工作。开放优化。