首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ggraph带你绘制网络饼图

ggraph带你绘制网络饼图

作者头像
R语言数据分析指南
发布于 2023-08-18 05:56:27
发布于 2023-08-18 05:56:27
78200
代码可运行
举报
运行总次数:0
代码可运行

欢迎关注R语言数据分析指南

❝本节来介绍如何使用igraph+scatterpie来绘制网络饼图,下面小编就通过一个案例来进行展示数据为随意构建无实际意义仅作图形展示用,添加了详细的注释希望各位观众老爷能够喜欢 ❞

加载R包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(tidyverse)
library(igraph)
library(ggraph)
library(graphlayouts)
library(ggforce)
library(scatterpie)
library(ggsci)

案例一

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 设置随机种子,确保结果的可复现性
set.seed(1439)
# 使用sample_pa函数生成一个包含20个节点的随机无标度网络
g <- sample_pa(20, 1)
# 为网络中的每个节点添加名为"A"的属性,属性值为从均值为0,标准差为1的正态分布中随机生成的绝对值
V(g)$A <- abs(rnorm(20, sd = 1))
# 为网络中的每个节点添加名为"B"的属性,属性值为从均值为0,标准差为2的正态分布中随机生成的绝对值
V(g)$B <- abs(rnorm(20, sd = 2))
# 为网络中的每个节点添加名为"C"的属性,属性值为从均值为0,标准差为3的正态分布中随机生成的绝对值
V(g)$C <- abs(rnorm(20, sd = 3))
# 使用layout_with_stress函数计算节点的布局坐标
xy <- layout_with_stress(g)
# 将计算得到的节点布局坐标分别赋值给节点属性"x""y"
V(g)$x <- xy[, 1]
V(g)$y <- xy[, 2]

# 使用ggraph函数绘制图形,使用"manual"布局,节点的x和y坐标从属性中获取
ggraph(g, "manual", x = V(g)$x, y = V(g)$y) +
  # 添加边的可视化,使用geom_edge_link0函数
  geom_edge_link0() +
  # 添加饼图散点,表示节点属性"A""B""C"的比例
  geom_scatterpie(cols = c("A", "B", "C"),
    data = as_data_frame(g, "vertices"),
    colour = NA, pie_scale = 2) +
  coord_fixed() +   # 设置坐标系为等比例缩放
  theme_graph() +
  theme(legend.position = "bottom")

案例二

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 生成一个包含9个岛屿、40个节点、连接概率为0.4、平均度数为15的网络图
g <- sample_islands(9, 40, 0.4, 15)
# 使用igraph包中的simplify函数简化网络图,去除重复边和自环
g <- igraph::simplify(g)
# 为每个节点添加名为"grp"的属性,属性值为重复的19,每个值重复40V(g)$grp <- as.character(rep(1:9, each = 40))
# 为每个节点添加名为"cat"的属性,属性值从"A""B""C"中随机采样得到,有放回
V(g)$cat <- sample(c("A", "B", "C"), vcount(g), replace = TRUE)
# 合并同一组内的节点,形成新的图g_clu,并使用"concat"方式合并节点属性
g_clu <- contract(g, V(g)$grp, vertex.attr.comb = "concat")

# 为新图g_clu的边添加名为"weight"的属性,所有边的权重设置为1
E(g_clu)$weight <- 1
# 使用simplify函数简化新图g_clu,对边的属性使用"sum"方式合并
g_clu <- simplify(g_clu, edge.attr.comb = "sum")

# 根据节点属性"cat"计算每个组内各个类别("A""B""C")的数量,分别添加为"A""B""C"的属性
V(g_clu)$A <- sapply(V(g_clu)$cat, function(x)
  sum(x == "A"))
V(g_clu)$B <- sapply(V(g_clu)$cat, function(x)
  sum(x == "B"))
V(g_clu)$C <- sapply(V(g_clu)$cat, function(x)
  sum(x == "C"))
# 使用layout_with_stress函数计算节点的布局坐标
xy <- layout_with_stress(g_clu)
# 将计算得到的节点布局坐标分别赋值给节点属性"x""y"
V(g_clu)$x <- xy[, 1]
V(g_clu)$y <- xy[, 2]

# 使用ggraph函数绘制图形,使用"manual"布局,节点的x和y坐标从属性中获取
ggraph(g_clu, "manual", x = V(g_clu)$x, y = V(g_clu)$y) +
  # 添加边的可视化,使用geom_edge_link0函数
  geom_edge_link0() +
  # 添加饼图散点,表示节点属性"A""B""C"的比例,填充颜色为白色,饼图比例尺度为3
  geom_scatterpie(cols = c("A", "B", "C"),
    data = as_data_frame(g_clu, "vertices"),
    colour = "white", pie_scale = 3) +
  scale_fill_npg() +
  coord_fixed() +   # 设置坐标系为等比例缩放
  theme_graph() +
  theme(legend.position = "bottom")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言数据分析指南 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
🤩 ggkegg | 用这个神包玩转kegg数据库吧!~(一)
好久没更了,实在是太忙了,值班真的是根本不不睡觉啊,一忙一整天,忙到怀疑人生。😭
生信漫卷
2023/10/08
7400
🤩 ggkegg | 用这个神包玩转kegg数据库吧!~(一)
scatterpie绘制气泡饼图及corrplot绘制相关性图
回顾之前我们介绍的BIB发表的工作:人类致癌通路的全面综述,文章中的绘图都很漂亮,小编发现文中主要的数据展示的绘图方法有饼图、堆积条形图、网络图、热图、箱式图、翻转条形图,都是一些比较常见的绘图方法,但是因作者比较善用配色,绘制的图形就看起来比较高级。吸引小编的是一组“饼图矩阵”,如下所示:
作图丫
2022/03/29
2.8K0
scatterpie绘制气泡饼图及corrplot绘制相关性图
R可视乎|复合饼图系列
散点复合饼图(compound scatter and pie chart)可以展示三个数据变量的信息:(x, y, P),其中x和y决定气泡在直角坐标系中的位置,P表示饼图的数据信息,决定饼图中各个类别的占比情况,如图(a)所示。
庄闪闪
2021/04/09
1.3K0
绘图技巧 | 绘制带饼图的地图可视化技巧分享
这一期呢,小编回应读者的需求,绘制在地图上添加饼图的可视化作品,这类图表在GIS或生态方面涉及的比较多哈。本期内容主要如下:
DataCharm
2021/04/16
2.8K0
绘图技巧 | 绘制带饼图的地图可视化技巧分享
三种可视化方法,手把手教你用R绘制地图网络图!
大数据文摘出品 编译:睡不着的iris、陈同学、YYY 不知道如何在地图上可视化网络图?下面这篇博客将使用R中的igraph、ggplot2或ggraph包来介绍三种在地图上可视化网络图的方法。在对地理位置以及位置的连接关系进行可视化时,还可以在图中展示一些属性。 当我们对节点(nodes)为地理位置的网络图进行可视化时,比较有效的做法是将这些节点绘制在地图上并画出它们之间的连接关系,因为这样我们可以直接看到网络图中节点的地理分布及其连接关系。 但这与传统的网络图是不同的。在传统的网络图中,节点的分布取决于
大数据文摘
2018/06/29
2.9K0
R:STRINGdb包用于string蛋白互作分析
本文将通过R包STRINGdb来进行string蛋白互作分析,同时会利用igraph和ggraph对互作网络进行可视化。
生信菜鸟团
2020/07/30
7.7K1
R:STRINGdb包用于string蛋白互作分析
🤠 Network | 高颜值动态网络可视化工具(二)
用到的仍是上一次的示例数据,为Daniel van der Meulen在1585年收到的信件所组成,
生信漫卷
2022/10/14
6560
R优雅的自定义绘制代谢通路图
❝最近看到一个非常好的案例来分享一下,使用igraph,ggraph等R包来自定义绘制代谢通路pathway, 原文文档链接见下方,数据可自行去官网下载。代码过程很是简洁,当然难点也许在于构建边文件与点文件。 这需要各位观众老爷细细品味 ❞ 原文文档 ❝https://github.com/cxli233/ggpathway❞ 加载R包 library(tidyverse) library(igraph) library(ggraph) library(readxl) library(viridis) li
R语言数据分析指南
2022/12/20
8010
R优雅的自定义绘制代谢通路图
使用R语言绘制string蛋白互作图
STRING(https://www.string-db.org)是已知和预测的蛋白质-蛋白质相互作用的数据库。交互包括直接(物理)关联和间接(功能)关联。数据库包含来自众多来源的信息,包括实验资料库,计算预测方法和公共文本集。每次互动都与组合的置信度相关综合各种证据的分数。目前,涵盖了来自5090的超过24百万种蛋白质生物。STRING数据库可用于在基因列表中添加含义。STRINGdb R软件包,以方便用户访问STRING中的数据库。在本指南中,以示例说明了该软件包的大多数功能。此外,iGraph包作为代表蛋白质-蛋白质相互作用网络的数据结构。
用户1359560
2020/09/01
2.7K0
使用R语言绘制string蛋白互作图
用R在地图上绘制网络图的三种方法
作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源
生信宝典
2019/05/09
3.1K0
用R在地图上绘制网络图的三种方法
R语言做网络图的又一个小例子
scale_edge_color_continuous(low = "cyan",high = "red")
用户7010445
2020/04/14
1.8K0
R语言做网络图的又一个小例子
R优雅绘制小样本间相关性网络图
报错信息表明rcorr函数在尝试计算Spearman相关性时遇到了问题,原因是数据中的某些变量(列)的观测值数量不足以进行相关性分析。具体来说rcorr 函数要求每个变量至少有5个观测值来计算相关性。
R语言数据分析指南
2024/01/23
6860
R优雅绘制小样本间相关性网络图
单细胞hdWGCNA分析学习和整理
hdWGCNA的分析逻辑是跟bulkRNA数据中的WGCNA基本一样,只是hdWGCNA中多了一步metacell过程,有助于减少无用的信息(单细胞数据有很多零值,会影响分析结果)。
凑齐六个字吧
2024/10/05
1.5K0
单细胞hdWGCNA分析学习和整理
roughnet绘制带有纹理填充的网络图
R语言数据分析指南
2023/08/18
2450
roughnet绘制带有纹理填充的网络图
R tips:celltrek细胞共定位分析
CellTrek是一个空间分析工具包,可以做单细胞和空间的整合分析、空间细胞共定位和空间基因表达分析。
生信菜鸟团
2025/03/17
2920
R tips:celltrek细胞共定位分析
高维分面应用——ggplot2分面气泡图饼图
今天仍然是一篇介绍关于ggplot2高维分面的教程,为什么要单独把这一块内容写这么多篇呢,因为很重要,而且很难搞定呀,高维分面是否能够熟练掌握将决定着你对ggplot2的理解甚至对于整个高维数据可视化的理解是否能够进阶。 其实ggplot2系统内的分面函数只有简单的一个facet_grid(),但是恰恰就是这么一个不很起眼,甚至看起来有些特立独行的分面函数,却给高维数据可视化带来了革命性的变化,有了它,所有基于ggplot2的可视化图形都能够扩展呈现 维度,从第三维、第四维、第五维(理论上来说)。 还是再强
数据小磨坊
2018/04/11
2K0
高维分面应用——ggplot2分面气泡图饼图
跟着Nature Genetics 学画图:R语言ggplot2一次性画好多个饼状图
最基本的想法就是单独画好多个饼状图,然后通过拼图实现,但是因为之前重复地图的时候新遇到了一个包是 scattermore可以直接指定输入数据,然后一次性将所有饼状图画好,这样就省去了拼图的步骤
用户7010445
2021/05/07
2.7K0
ggraph优雅的绘制网络流程图
R语言数据分析指南
2023/08/18
5470
ggraph优雅的绘制网络流程图
跟着NatureGenetics学作图:R语言ggplot2柱形图/饼图/箱线图展示柑橘泛基因家族分析的结果
https://www.nature.com/articles/s41588-023-01516-6
用户7010445
2023/10/07
8200
跟着NatureGenetics学作图:R语言ggplot2柱形图/饼图/箱线图展示柑橘泛基因家族分析的结果
医学统计与R语言:圆形树状图(circular dendrogram)
输入1: install.packages("ggraph") library(ggraph) install.packages("igraph") library(igraph) myedges <- import("edges.xlsx");myedges myedges1 <- myedges[-3] myvalue <- rbind(,myedges []);myvalue myvertices <- data.frame(name = unique(c(as.character(myedges
王诗翔呀
2020/07/06
2.1K0
医学统计与R语言:圆形树状图(circular dendrogram)
推荐阅读
相关推荐
🤩 ggkegg | 用这个神包玩转kegg数据库吧!~(一)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验