问题标签 [ggraph]

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 投票
0 回答
567 浏览

r - 在 r 中创建圆形/同心二部图

已解决:查看我的解决方案,添加在帖子底部。

我目前正在尝试使用 r 创建一个圆形二分图,最好使用 ggraph。我有一个雄性和雌性青蛙交配关系的数据集;这是该数据的一个子集:

我的目标是可视化每个有机体拥有的伙伴数量,如下所示:

显示母亲和父亲生物之间关系的同心二部图

到目前为止,我已经能够使用 igraph 制作图形的线性版本:

产生这个: 线性二分图显示母亲和父亲之间的交配关系;由于标签重叠,非常纠结且难以阅读

我坚持将其转换为圆形可视化。我尝试过的两件事是:

首先,将 igraph 对象带入 ggraph 并使用“圆形”布局进行绘制:

但是我得到的不是两个同心环,而是一个大圆圈,这对于显示数据没有用(我知道,通过 ggraph 可以更简单地完成)。

交配数据的单环可视化,母亲和父亲都在一个环中

其次,我尝试将 igraph 对象带入 ggraph 并将循环设置为 TRUE:

但我收到错误消息:

关于如何产生我正在寻找的可视化的任何想法?我对 r 和 stackoverflow 都很陌生,所以对于对我的问题的解释有任何限制,我深表歉意。谢谢!

解决方案:

首先,加载您需要的包。

library(tidyverse) library(tidygraph) library(igraph) library(ggraph)

现在,读入你的节点和边数据,并用 ggraph 构造图形对象。

Nodes <- read_csv("Nodes.csv") Edges <- read_csv("Edges.csv") Graph <- tbl_graph(nodes = Nodes, edges = Edges)

接下来,使用二分布局创建一个表示您的图形的对象。

g <- Graph V(g)$type <- bipartite_mapping(g)$type

基于该二分图对象,我们将找到将节点排列成同心圆的每个节点的 x 和 y 坐标。首先,使用 create_layout 创建一个对象“coords”,它描述了当前的二分布局。coords 包含线性二分图中每个节点的 x 和 y 坐标列。

coords <- create_layout(g, layout = "bipartite") %>%

接下来,我们将使用一些三角函数将 x 和 y 坐标从线性二部图的坐标更改为描述圆形图的 x 和 y 坐标。首先,选择 x 和 y 列。

select(x, y) %>%

这条线创建了一个列,“theta”,它基本上根据我们需要沿圆边缘放置的节点数将单位圆划分为多个切片,并为每个节点分配一个切片。

mutate(theta = x / (max(x) + 1) * 2 * pi,

接下来的行创建 r 值,节点将被放置的圆的半径,并在笛卡尔平面上找到 x 和 y 坐标,该平面将沿着圆的边缘放置每个节点。

r = y + 1, x = r * cos(theta), y = r * sin(theta))

现在我们创建一个全新的图形布局,它根据我们刚刚在坐标中创建的那些圆坐标给出节点位置。

my_graph <- create_layout(g, "manual", node.position = coords)

我还想确保每个节点的标签以逻辑方式旋转,以便没有标签重叠并且所有标签都易于阅读。为此,首先根据“坐标”创建一个名为“label_data”的对象。

label_data <- coords

通过将 theta 列从弧度转换为度数,向 label_data 添加一个新列,称为“角度”。

label_data$angle <- (label_data$theta)*(180/pi)

如果我们只使用这个角度值,那么圆的第三和第四象限中的标签就会颠倒过来。因此,我们将这些区域的角度值转换为将它们正面朝上翻转。

label_data$plottingangle<-ifelse(label_data$angle < 270 & label_data$angle > 90, label_data$angle - 180, label_data$angle)

最后,我们只绘制具有我们创建的布局的图形对象,指定 geom_node_text 美学中标签的旋转角度。多田!

ggraph(my_graph) + geom_edge_link(edge_colour = "gray73") + geom_node_point(size = 0.8) + geom_node_text(aes(label = IndividualID, angle = label_data$plottingangle), size = 3) + scale_shape_manual(values = c(0, 19)) + coord_fixed() + theme_graph()

0 投票
1 回答
213 浏览

graph - 在不使用 GGRAPH 的 SPSS 散点图中反转轴

我想在 SPSS 中创建一个带有反向 y 轴的分组散点图,但我不知道如何。y 轴从 1 到 12 向上,但我想反转它,所以它从 1 到 12 向下。

使用命令GRAPH和子命令 /SCATTERPLOT无法手动反转 y 轴。

使用使用命令的图表生成器,GGRAPH我可以反转 y 轴(使用SCALE: cat(dim(2), reverse())),但它会使用奇怪的数字(例如 24、31、37、43 而不是 20、30)弄乱我在 x 轴上的比例, 40) 我无法改变。

您有什么想法如何制作带有倒置 y 轴的分组散点图或如何重新调整 x 轴的比例GGRAPH?我是 SPSS 的初学者,所以一些代码会很有帮助。谢谢您的帮助。


使用命令GRAPH- 在这里我无法反转 y-axis


使用带有命令GGRAPH的图表构建器 - 这里图表构建器对 x 轴使用了一个我无法更改的奇怪比例。.

0 投票
1 回答
764 浏览

r - ggraph中的图例线粗细

使用时ggraph,有没有办法加粗边缘颜色的图例线?我试图覆盖但无济于事。这是一个例子:

几乎看不到图例线

我的首选输出看起来更像这样:

在此处输入图像描述

0 投票
1 回答
173 浏览

r - 由 tidygraph 计算的无向网络图显示的度中心性超出了应有的范围

我有一个包含 26 个节点的清理数据集。我使用 tidygraph 将这 26 个节点放置在一个无向网络图中,我使用该centrality_degree()函数来计算中心度。但是,当我绘制结果网络时,我可能的最高中心度为 40,这应该是不可能的。当我将图表更改为有向图时,这已得到纠正。

我有点困惑,作为我过去使用的其他方法,我手动计算中心度,我从未遇到过这个问题。

这是常规行为,还是我做错了什么?

可重现的例子:

0 投票
1 回答
259 浏览

r - ggraph 节点标签被截断

我使用 ggraph 生成了一个非常简单的带有圆形布局的网络图。节点标签的角度沿圆的边缘发生变化,以便于阅读。但是,标签被截断,调整边距似乎没有任何区别。我玩了ggsave,egg,并没有太多的快乐。

这是我的可重现代码。也许有人可以帮助我。提前致谢:

0 投票
2 回答
526 浏览

r - 如何减少 ggraph 弧图中的节点?

我正在尝试创建一个弧形图,显示非营利组织之间的关系,重点是以其中一个非营利组织为中心的子图。这个子图中有这么多的非营利组织,我需要减少弧图中的节点数量,只关注最强的连接。

我已成功过滤掉权重低于 50 的边。但是当我创建图表时,即使边消失了,节点仍然存在。如何从弧形图中过滤掉不需要的节点?

这是我的代码,从 igraph 对象的创建开始。

这是我得到的结果: 在此处输入图像描述

0 投票
1 回答
182 浏览

r - 如何根据节点社区对边缘进行着色?

如何将颜色信息添加到 tbl_graph 的边缘?我想根据“to”和“from”节点的颜色为边缘着色:如果两个节点具有相同的颜色,那么它们之间的边缘应该具有相同的颜色。

0 投票
0 回答
278 浏览

r - R ggraph 在指定 facet_edges 时删除隔离

我正在用这个tidygraph包做一些探索性的网络分析。我正在尝试使用ggraph包生成带有我的数据的多面图。我创建了 2 个不同的tbl_graph对象,我使用该bind_graphs函数将它们绑定在一起。

我正在使用的代码是:

尽管有大量警告,但我仍然获得了多面图。但是,尽管filter(!node_is_isolated())在两个子图中都进行了调用,但多面图仍会绘制所有分离株。facet_edges当我避免指定选项时,不会发生这种情况。

任何帮助将不胜感激。

0 投票
1 回答
630 浏览

r - 如何在ggraph的边缘中间绘制箭头

是否可以使用 在边缘中间绘制箭头ggraph::geom_edge_link(),如果可以,如何做到这一点?

而不是像这样在边缘末端绘制箭头的东西:

绘图.png

我希望能够实现这样的目标:

Rplot01.png

我已经检查了ggraph::geom_edge_link()grid::arrow()文档,但看不到有关如何执行此操作的任何明显内容。

0 投票
1 回答
150 浏览

r - ggraph:根据属性的顶点位置

假设我有一个igraph如下图:

出于目前的目的,该图将始终是一棵树或一个 DAG,我想用ggraph树状布局来绘制该图。我的问题是:如何使用timey 值的 vertex 属性绘制此图?

我可以设置正确定位节点aes(y = time)geom_node_point但边缘不跟随:

reprex 包(v0.3.0)于 2019 年 11 月 17 日创建

yoryend美学设置为timeingeom_edge_link会引发错误。

我是新手ggraph,所以我被困在如何解决这个问题上。