问题标签 [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 回答
46 浏览

r - 从R中的tidygraph对象列表返回列表索引?

所以,我有一个多个tidygraph对象的列表,我想要做的是返回索引一个特定的tidygraph对象,由用户选择。希望我下面的例子能解释这个问题。

(旁白:我尝试了一个我在下面展示的解决方案,但目前运行速度非常慢。我希望提出一个不同的、更快的解决方案。)

首先,我创建一些数据以转换为tidygraph对象,然后创建tidygraph对象并将它们全部放在一个列表中:

为清楚起见,查看第一个列表元素如下所示:

我们可以看到每个对象都有一个名为的变量level和另一个名为的变量rank。我试图做的是通过选择levelrank数字返回对象的列表索引。因此,例如,如果我选择level = 1and rank = 2,我的函数将返回具有这些值的对象的索引(在本例中为第二个列表元素)。我尝试的解决方案如下,但这是一个非常缓慢的过程......我想知道是否有更好的方法来实现我想要的?

我尝试的解决方案

在我的解决方案中,我首先将每个tidygraph对象都放在一个小标题中,以使它们更易于操作。这就是为什么我的功能如此缓慢的原因。在我的数据tidygraph中,一个列表中最多可以有 200,000 个对象,因此遍历它们并将它们全部转换为小标题是一个非常缓慢的过程。我这样做是这样的:

然后这是我实际用来提取所选对象索引的函数:

例如:

通过选择级别和排名,该函数返回列表中的对象索引。但是有没有更快的方法来达到这个结果?

0 投票
1 回答
45 浏览

r - 在R中使用整齐的图形时按变量着色?

我试图想出一种方法来一致地为多个tidygraph图着色。现在,问题是,当我一次在屏幕上绘制多个图时,tidygraph为每个变量选择不同的颜色。希望我下面的例子能解释这个问题。

首先,我创建一些数据,将它们转换为tidygraph对象,然后将它们组合成一个列表:

然后我有一个绘图功能,可以让我一次显示所有的图。我使用包中grid.arrange的方法执行此操作gridExtra,如下所示:

这将产生如下内容: 示例图

如您所见,它label为每个单独的图按变量着色。这导致同一变量label在每个图中的颜色不同。例如,x4第一个图中是红色,第二个图中是蓝色。

我正在尝试找到一种方法使变量的颜色label在所有图中保持一致。也许使用grid.arrange不是最好的解决方案!?

任何帮助表示赞赏。

0 投票
1 回答
19 浏览

r - 计算包含R中列表的矩阵的相同列?

我正在处理的数据是一个矩阵,其中矩阵中的每一列都是一个包含 2 个元素的列表。我要做的是计算有多少列是相同的。

我正在从tidygraph对象中提取列表矩阵。我下面的例子应该更好地解释我的问题。首先,我创建一些数据,将它们转换为tidygraph对象并将它们全部放入一个列表中,如下所示:

为清楚起见,查看以下元素之一myList

本质上,我想做的是遍历列表的每个元素,查看边缘数据,看看有多少是相同的。我确信有多种方法可以做到这一点......但我尝试通过使用一个tidygraph函数来提取边缘数据并返回列表矩阵来做到这一点:

同样,为了清楚起见,查看第 1 列resEdges如下所示:

所以,我想做的是遍历resEdges's 列并计算相同列的频率。

在我的示例中,只有 3 个唯一列。所以,我想要的输出看起来像这样:

0 投票
1 回答
49 浏览

r - R中同一窗口中的多个不同大小的图?

类似的问题已经被问过很多次了,例如这里这里。但是,到目前为止我看到的所有其他答案并没有真正解决我的问题。

我试图在同一个窗口中绘制多个不同大小的图。我正在处理tidygraph对象并ggraph用于创建绘图。我尝试使用gridExtraand cowplots,但是,我似乎无法让它们按我的意愿工作。

例如,首先我创建一些数据,将它们转换为tidygraph对象并将它们放在一个列表中,如下所示:

然后我创建一个绘图函数ggraph并创建一个绘图列表,如下所示:

因此,在我的示例中,我有 3 个不同的图......我试图在同一个窗口中绘制所有 3 个图,但每个图的大小不同。我想要的输出如下图所示...

我试图做的是有一个情节“全尺寸”,第二个情节,第一个情节的1/2,第三个情节的第一个情节的1/4。这看起来像:

示例图

注意:图像是在 Photoshop 中制作的,所以我上面提到的比例在图像中并不准确。

我在尝试的解决方案中的想法是使用gridExtraor cowplot...

尝试的解决方案

0 投票
1 回答
80 浏览

r - R:返回所有简单路径的边列表

我正在尝试使用 tidygraph 获取两个节点之间的路径边缘列表。这是一个例子

我使用 igraph 包中的 all_simple_paths 来获取节点 B 和节点 C 之间的所有可能路径。

我想知道如何为所有简单路径生成边列表。谢谢你。

0 投票
1 回答
35 浏览

r - 计算R中tidygraph对象列表中相同列的频率?

我有一些包含在列表中的 tidygraph 对象。我正在尝试计算相同的列的频率(在 tidygraph 节点数据中)。

例如,

如果我创建一些节点和边缘数据,将它们转换为 tidygraph 对象,并将它们放在一个列表中,如下所示:

我们可以看到tgtg_1tg_2都有相同的name列。同样,tg_4并且在节点数据中tg_5具有相同name的列。

我试图想出一种方法来计算具有相同name列的 tidygraph 对象的频率。我希望能够返回 tidygraph 对象的列表,其中可能添加了另一个显示频率的列。就我而言,该val列并不重要,所以我想要的输出看起来像这样:

需要明确的是,在我上面的示例中,name包含的列x4, NA, NA在我的原始对象列表中出现了 3 次。因此频率计数为 3。类似地,name等于的列在 中x1, x2, NA出现 2 次myList,因此它的频率为 2... 等等。

但是,对于返回频率信息的最佳方式,我愿意接受任何聪明的建议。

0 投票
1 回答
35 浏览

r - 从R中的tidygraph对象列表中删除重复的元素?

我有一个 tidygraph 对象的列表。在节点数据中,我有两列,即namefrequency。我想要做的是删除任何重复多次的列表元素(即tidygraph 对象)。希望我的例子可以解释更多:

首先,我创建了一些节点/边缘数据,将它们转换为 tidygraph 对象并将它们放在一个列表中:

然后,我有一个小函数,它可以根据name列告诉我每个列表元素的频率。也就是说,如果列name在多个列表元素中重复/相同,则频率会增加。因此,在我上面的示例中,name列在我的列表中tg出现了 3 次(在tgtg_1和中相同tg_2)......所以它的频率为 3。

然后,我向每个列表元素添加一frequency列并更改我的原始myList对象。例如:

现在查看newList返回:

所以我们可以看到该namex4, NA, NA出现了 3 次......但不是将频率添加到每个......我似乎在倒数频率(不是故意的)......所以,x4, NA, NA说它的频率是 3,然后2 然后 1。

我正在尝试删除任何重复的列表元素并仅保留频率最高的元素。例如,我想要的输出如下所示:

在这里,我们可以看到具有重复频率的元素已被删除......关于我如何做到这一点的任何建议?

0 投票
1 回答
53 浏览

r - 如何根据 R 中列表中的列重新排序 tidygraph 对象列表?

我有一个tidygraph对象列表。我正在尝试根据特定标准重新排序列表元素。也就是说,我列表中的每个元素都有一个名为name. 我正在尝试将具有相同name列的列表元素组合在一起......但我也想按其计数的降序对它们进行分组(即,name每个列表元素中相等列的计数)。希望我的例子能解释得更清楚。

首先,我创建了一些数据,将它们转换为 tidygraph 对象并将它们放在一个列表中:

因此,我们可以看到 中有 6 个tidygraph对象myList

检查每个元素,我们可以看到 3 个对象具有相同的name列(即x4,NA,NA).... 2 个对象具有相同的name列("x4", "x2", NA, NA, "x1", NA, NA).. 和 1 个对象仍然存在(x1,x2,NA)。

使用一个小函数来获取同名列的计数:

只是为了清楚起见:

我想myList根据对象中的val列重新排列列表元素的顺序counts

我想要的输出看起来像这样(我只是手动重新排序):

有没有办法根据相同name列的数量自动重新排序我的列表?

更新:

所以我尝试的解决方案是执行以下操作:

上面的代码按列对列表元素进行分组,name并返回一个名为ind. 然后我通过ind索引来索引我的原始列表以重新排列我的列表。

但是,我仍然想找到一种方法来根据每个相同变量的总量对新列表进行排序name……我还没有弄清楚。

0 投票
0 回答
35 浏览

r - 如何在 R 中使用带有 ggraph 的 tidygraph 按重量和高度调整节点的大小?

我试图通过权重(在这种情况下相当于节点的宽度)和它的高度来调整树的节点大小。为此,我同时使用tidygraphggraph

例如,如果我创建一些数据并将其转换为tidygraph对象,然后我可以使用ggraph. 如果我只使用weight参数(在ggraph调用中),我会得到如下图:

按重量缩放的树

这通过参数缩放树节点的宽度nodes$size。但是,如果我尝试同样的事情,除了我用 替换weight参数height,那就是:

我得到一个省略第一个节点的图(如下所示)和以下错误:

警告消息:在 hierarchy$height[edges[, node_col]] <- height :
要替换的项目数不是替换长度的倍数

按高度缩放的树

我想以某种方式将 theweightheightarguments 组合成一个情节。

我尝试通过将height论点放入美学中来进行实验,geom_node_tile如下所示:

但这会在节点之间留下间隙: 树缩放

有没有办法通过重量和高度来缩放节点,但仍然有一个连接的节点,如下例所示(我在 powerpoint 中快速制作): 正确的树

0 投票
1 回答
33 浏览

r - 用tidygraph和ggraph将列定义为y轴?食物网和网络图

社区!

我有一个关于tidygraph::ggraph::包的问题。我正在尝试创建一个食物网网络图(下面的代码和图表),但是,我想使用带有定义 y 轴的 kk 布局,在我的例子中是来自 nodes_df 的 TL 列。

我创建了模拟数据以作为示例显示。如果有人对如何改进这个情节有任何想法,那将有很大帮助。

reprex 包创建于 2022-02-03 (v2.0.1)