前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >roughnet绘制带有纹理填充的网络图

roughnet绘制带有纹理填充的网络图

作者头像
R语言数据分析指南
发布2023-08-18 13:43:00
1320
发布2023-08-18 13:43:00
举报

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

❝本节来介绍一款R包「roughnet」其最主要用来绘制网络图时添加纹理填充,小编测试后发现挺有趣的有多了一种图形展示方式。感兴趣的朋友欢迎分享转发,「更多详细内容请参考作者官方文档」

官方文档

❝https://github.com/schochastics/roughnet ❞

加载R包

代码语言:javascript
复制
remotes::install_github("schochastics/roughnet")
library(roughnet)
library(igraph)
install.packages(c("signnet","graphlayouts"))
library(signnet)
library(graphlayouts)
library(dplyr)

绘制纹理填充网络图

代码语言:javascript
复制
g <- make_graph("Zachary") # 创建一个名为 "Zachary" 的图形对象
V(g)$shape <- "circle" # 将图形中的节点形状设置为圆形
V(g)$shape[c(1,34)] <- "rectangle" # 将节点 1 和节点 34 的形状设置为矩形
# 根据 Louvain 社区检测算法的结果,为节点设置不同的填充颜色
V(g)$fill <- c("#E41A1C", "#377EB8", "#4DAF4A", "#984EA3")[membership(cluster_louvain(g))]
# 根据 Louvain 社区检测算法的结果,为节点设置不同的填充样式
V(g)$fillstyle <- c("hachure", "zigzag", "cross-hatch", "dots")[membership(cluster_louvain(g))]
V(g)$color <- "black" # 将节点的边框颜色设置为黑色
V(g)$size <- 30 # 将节点的大小设置为 30
V(g)$stroke <- 2 # 将节点的边框粗细设置为 2
E(g)$color <- "#AEAEAE" # 将边的颜色设置为灰色
# 创建一个宽度为 930,高度为 600 的 roughnet 图形
roughnet(g, width = 930, height = 600)

自定义填充形状

代码语言:javascript
复制
data("avatar")  # 载入 "avatar" 数据集
main <- induced_subgraph(avatar, which(V(avatar)$main))  # 提取 "main" 标记的子图
w <- ifelse(E(main)$sign == 1, 3, 1) # 根据边的符号(sign)确定边的宽度
xy <- layout_with_stress(main, weights = 1/w) # 使用 stress 布局计算节点的坐标

# 将计算得到的 x 坐标赋值给节点属性 V(main)$x
V(main)$x <- xy[, 1]

# 将计算得到的 y 坐标赋值给节点属性 V(main)$y
V(main)$y <- xy[, 2]

# 根据所属派系为节点设置不同的填充颜色
V(main)$fill <- case_when(V(main)$affiliation == "earth kingdom" ~ "#8B6914",
                          V(main)$affiliation == "fire nation" ~ "#CD2626",
                          V(main)$affiliation == "water tribe" ~ "white",
                          V(main)$affiliation == "air nomad" ~ "#98F5FF",
                          TRUE ~ "grey")

# 根据所属派系为节点设置不同的边框颜色
V(main)$color <- case_when(V(main)$affiliation == "earth kingdom" ~ "#8B6914",
                           V(main)$affiliation == "fire nation" ~ "#CD2626",
                           V(main)$affiliation == "water tribe" ~ "#1874CD",
                           V(main)$affiliation == "air nomad" ~ "#98F5FF",
                           TRUE ~ "grey")

# 根据所属派系为节点设置不同的形状
V(main)$shape <- case_when(V(main)$affiliation == "earth kingdom" ~ "earth",
                           V(main)$affiliation == "fire nation" ~ "fire",
                           V(main)$affiliation == "water tribe" ~ "water",
                           V(main)$affiliation == "air nomad" ~ "air",
                           TRUE ~ "circle")

E(main)$width <- ifelse(E(main)$sign == 1, 1.2, 0.3) # 根据边的符号(sign)确定边的宽度
E(main)$color <- ifelse(E(main)$sign == 1, "#228B22", "#CD3278") # 根据边的符号(sign)确定边的颜色
V(main)$label <- V(main)$name # 将节点的名称作为标签显示

V(main)$pos <- c("n", "s", "s", "s", "s", "e", "n", "e", "s", "n")  # 设置节点的位置属性

# 创建一个宽度为 600,高度为 600 的 roughnet 图形,使用 Herculanum 字体
roughnet(main, width = 600, height = 600, font = "30px Herculanum")
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 欢迎关注R语言数据分析指南
  • 官方文档
  • 加载R包
  • 绘制纹理填充网络图
  • 自定义填充形状
相关产品与服务
腾讯云服务器利旧
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档