Dendrogram | 今天是人见人爱、花见花开的环形Dendrogram!~(附完整代码)

news2024/9/23 3:13:31

1写在前面

好长时间没更新了,这周真的是天天都在手术室度过,常讲到的一句话就是苦的一比啊。🫠

很久没有见过外面的世界了,世界那么大,我也想去看看!~😂

废话太多了,今天的教程是环形dendrogram,颜值还是不错的。😋

大家来一起看看吧!~🌟

2用到的包

rm(list = ls())
library(ggraph)
library(igraph)
library(tidyverse)
library(RColorBrewer)

3示例数据

3.1 edges数据

首先我们无中生有一个data,典型的fromto两列。🤓

d1 <- data.frame(from = "origin", to = paste("group", seq(1,10), sep=""))

d2 <- data.frame(from = rep(d1$to, each=10), to = paste("subgroup", seq(1,100), sep = "_"))

edges <- rbind(d1, d2)

DT::datatable(edges)
alt

3.2 创建nodes数据

一样的,我们生成些随机数fromto吧。🥳

这些数值就作为nodesdata。🧐

vertices <-  data.frame(
name = unique(c(as.character(edges$from), as.character(edges$to))) ,
value = runif(111)
)

DT::datatable(vertices)
alt

4添加分组

我们再添加一列,显示每个name的分组。🤨

后面可以用来分类颜色。😜

vertices$group <- edges$from[match(vertices$name, edges$to)]

DT::datatable(vertices)
alt

5添加labels信息

5.1 计算labels的角度

vertices$id <- NA
myleaves <- which(is.na( match(vertices$name, edges$from) ))
nleaves <- length(myleaves)
vertices$id[ myleaves ] <- seq(1:nleaves)
vertices$angle <- 90 - 360 * vertices$id / nleaves

DT::datatable(vertices)
alt

5.2 计算labels的对齐方式

vertices$hjust<-ifelse(vertices$angle < -90, 1, 0)

DT::datatable(vertices)
alt

5.3 反转角度

我们反转一下角度,方便阅读。🧐

vertices$angle<-ifelse(vertices$angle < -90, vertices$angle+180, vertices$angle)

DT::datatable(vertices)
alt

6igraph创建网络对象

net <- graph_from_data_frame(edges, vertices=vertices)

net
alt

7最终绘图

ggraph(net, layout = 'dendrogram', circular = T) + 
geom_edge_diagonal(colour="grey") +
scale_edge_colour_distiller(palette = "RdPu") +
geom_node_text(aes(x = x*1.15, y=y*1.15,
filter = leaf, label=name,
angle = angle, hjust=hjust,
colour=group),
size=2.7, alpha=1) +
geom_node_point(aes(filter = leaf, x = x*1.07, y=y*1.07,
colour=group, size=value, alpha=0.2)) +
scale_colour_manual(values= rep( brewer.pal(9,"Paired") , 30)) +
scale_size_continuous( range = c(0.1,10) ) +
theme_void() +
theme(
legend.position="none",
plot.margin=unit(c(0,0,0,0),"cm"),
) +
expand_limits(x = c(-1.3, 1.3), y = c(-1.3, 1.3))
alt

alt
最后祝大家早日不卷!~

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

📍 往期精彩

📍 🤣 chatPDF | 别再自己读文献了!让chatGPT来帮你读吧!~
📍 🤩 WGCNA | 值得你深入学习的生信分析方法!~
📍 🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!
📍 🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?
📍 🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)
📍 🤩 scRNA-seq | 吐血整理的单细胞入门教程
📍 🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~
📍 🤩 RColorBrewer | 再多的配色也能轻松搞定!~
📍 🧐 rms | 批量完成你的线性回归
📍 🤩 CMplot | 完美复刻Nature上的曼哈顿图
📍 🤠 Network | 高颜值动态网络可视化工具
📍 🤗 boxjitter | 完美复刻Nature上的高颜值统计图
📍 🤫 linkET | 完美解决ggcor安装失败方案(附教程)
📍 ......

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全/信息安全(黑客技术)自学笔记

一、网络安全基础知识 1.计算机基础知识 了解了计算机的硬件、软件、操作系统和网络结构等基础知识&#xff0c;可以帮助您更好地理解网络安全的概念和技术。 2.网络基础知识 了解了网络的结构、协议、服务和安全问题&#xff0c;可以帮助您更好地解决网络安全的原理和技术…

从分片传输到并行传输之大文件传输加速技术

随着大文件的传输需求越来越多&#xff0c;传输过程中也会遇到很多困难&#xff0c;比如传输速度慢、文件安全性低等。为了克服这些困难&#xff0c;探讨各种大文件传输加速技术。其中&#xff0c;分片传输和并行传输是两种比较常见的技术&#xff0c;下面将对它们进行详细说明…

WEB:Web_python_template_injection

背景知识 python模板注入 ssit 题目 打开题目&#xff0c;发现页面提示&#xff0c;翻译为python模板注入 先测试是否存在注入 可以发现被执行了 先查看所有的子类 payload {{[].__class__.__base__.__subclasses__()}} 利用site.Printer的os模块执行命令 payload {{.__…

CAN转EtherNet/IP网关can协议破解服务

JM-EIP-CAN 是自主研发的一款 ETHERNET/IP 从站功能的通讯网关。该产品主要功能是将各种 CAN 总线和 ETHERNET/IP 网络连接起来。 本网关连接到 ETHERNET/IP 总线中做为从站使用&#xff0c;连接到 CAN 总线中根据节点号进行读写。 技术参数 ETHERNET/IP 技术参数 网关做为 …

C# Socket实际应用案例与属性详解

引言 Socket是一个在网络编程中非常常见和重要的概念&#xff0c;它提供了一种通信机制&#xff0c;使不同的计算机之间可以进行数据传输。本文将介绍C#中Socket的实际应用案例&#xff0c;并对Socket的常用属性进行详细解析。 文章目录 1. Socket的实际应用案例2. Socket的属…

CAS比较并交换具体实现细节

线程2读取内存值到工作内存中&#xff0c;设置一个预估值与读入的值相等&#xff0c;线程1也同样读入。 线程2进行操作&#xff0c;之后在写入内存前&#xff0c;将预估值与内存值作比较&#xff0c;看内存值是否修改过。 如果线程2比较完相同&#xff0c;则修改内存值为1&am…

开源了!最强原创图解八股文面试网来袭

强烈推荐 Github上业内新晋的一匹黑马—Java图解八股文面试网—Java2Top.cn&#xff0c;图解 Java 大厂面试题&#xff0c;深入全面&#xff0c;真的强烈推荐~ 这是一个二本逆袭阿里的大佬根据自己秋招上岸所看过的相关专栏&#xff0c;面经&#xff0c;课程&#xff0c;结合自…

211. 添加与搜索单词 - 数据结构设计---------------字典树

211. 添加与搜索单词 - 数据结构设计 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;参考代码&#xff1a; 原题链接&#xff1a; 211. 添加与搜索单词 - 数据结构设计 https://leetcode.cn/problems/design-add-and-search-words-data-structure/descriptio…

tinkerCAD案例:19. Move Circuit Assembly 移动电路组件

tinkerCAD案例&#xff1a;19. Move Circuit Assembly 移动电路组件 In this tutorial, you’ll learn how to add the Move circuit assembly to a design. 在本教程中&#xff0c;您将学习如何将移动电路装配体添加到设计中。 When you assemble the Move circuit assembly…

【Docker】Docker应用部署之Docker容器安装Tomcat

目录 一、搜索镜像 二、拉取镜像 三、创建容器 四、测试使用 一、搜索镜像 docker search tomcat 二、拉取镜像 docker pull tomcat:版本 三、创建容器 首先在宿主机创建数据卷的目录 mkdir /root/tomcat # 创建目录 cd /root/tomcat # 进入目录 docker run -id -…

解决mysqld服务启动失败

1、进程 首先查看下mysql进程: ps -aux | grep mysql有进程号 2、所有者和所属组为mysql 查看/usr/local/MySQL/data/mysqld.pid所有者和所属组是否为mysql 原来是权限有问题&#xff0c;那么更改权限&#xff08;还需要加权限&#xff09;3、 重新启动服务

2023牛客暑期多校-J-Qu‘est-ce Que C‘est?(DP)

题意&#xff1a; 给定长度为n的数列,要求每个数都在的范围&#xff0c;且任意长度大于等于2的区间和都大于等于0&#xff0c;问方案数。。 思路&#xff1a; 首先要看出是dp题&#xff0c;用来表示遍历到第i位且后缀和最小为x的可行方案数&#xff08;此时的后缀可以只有最…

LeetCode[面试题04.08]首个共同祖先

难度&#xff1a;Medium 题目&#xff1a; 设计并实现一个算法&#xff0c;找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意&#xff1a;这不一定是二叉搜索树。 例如&#xff0c;给定如下二叉树: root [3,5,1,6,2,0,8,null,null,7,…

软考高级架构师笔记-10数学计算题

目录 1. 前文回顾 & 考情分析2. 最小生成树3. 最短路径4. 网络与最大流量5. 线性规划6. 动态规划/决策表7. 博弈论8. 状态转移矩阵9. 决策论10. 结语1. 前文回顾 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记-2计算机软件(操作系统)软考…

Spring AOP 的概念及其作用

一、什么是 Spring AOP&#xff1f; 在介绍 Spring AOP 之前&#xff0c;首先要了解一下什么是 AOP &#xff1f; AOP &#xff08; Aspect Oriented Programming &#xff09;&#xff1a;面向切面编程&#xff0c;它是一种思想&#xff0c; 它是对某一类事情的集中处 理 。…

vue强制刷新的方法

前言 在开发过程中,有时候会遇到这么一种情况&#xff1a; 1.切换页面页面没有更新 2.通过动态的赋值,但是dom没有及时更新,能够获取到动态赋的值,但是无法获取到双向绑定的dom节点, 这就需要我们手动进行强制刷新组件,下面这篇文章主要给大家介绍了关于vue组件强制刷新的方案…

搭建自己的Git服务器

环境 服务端&#xff1a;Ubuntu 22.04 客户端&#xff1a;Win11_x64 前提条件&#xff1a;需要确保在Windows机器上能够ping通Ubuntu服务器, 并且服务端与客户端均已安装了Git软件 服务端上的配置操作 以Ubuntu服务器作为Git服务端的运行环境&#xff0c;并方便后期免密推…

iOS开发-CAShapeLayer与UIBezierPath实现微信首页的下拉菜单效果

iOS开发-CAShapeLayer与UIBezierPath实现微信首页的下拉菜单效果 之前开发中遇到需要使用实现微信首页的下拉菜单效果。用到了CAShapeLayer与UIBezierPath绘制菜单外框。 一、效果图 二、CAShapeLayer与UIBezierPath 2.1、CAShapeLayer是什么&#xff1f; CAShapeLayer继承自…

解决Nacos启动时遇到的一些错误

当我们双击nacos的bin目录下的statup.cmd启动Nacos时&#xff0c;发现报以下错误&#xff1a; [dba-load-error] load jdbc.properties error 报错的原因是&#xff1a;数据库找不到&#xff0c;没有导入。 解决方法步骤&#xff1a; ①在安装的nacos的conf目录下&#xff0…

C++:类和对象(下)---对类和对象深入一些的理解

文章目录 构造函数&#xff1f;初始化列表explicit关键字 匿名对象 构造函数&#xff1f; 初始化列表 前面已然介绍过构造函数&#xff0c;但并未完全结束&#xff0c;构造函数有很多种写法&#xff0c;有带缺省参数的&#xff0c;有全缺省的&#xff0c;不带缺省参数的…但用…