环状热力图R语言画法

环状热力图(Circular Heatmap)是一种以环状布局展示数据的可视化方法。它结合了热力图和极坐标系统,能够有效地显示数据的关系、模式和趋势。

环状热力图通常用于可视化二维数据矩阵,其中行和列代表不同的类别或变量,而单元格内的颜色则表示对应变量的数值大小。与传统的矩形热力图不同,环状热力图将矩形排列成一个环状,使得数据在环上的分布更加直观。

环状热力图的优势在于它可以同时展示多个变量之间的关系,并且可以通过调整环的顺序和角度来改变数据展示的方式。此外,通过在环状热力图中添加其他图层,如聚类树图或标签,可以进一步增强数据的解读和呈现效果。

创建环状热力图的步骤通常包括以下几个方面:

  1. 准备数据:将需要展示的数据转换成适合环状热力图的格式,通常是一个二维矩阵。
  2. 绘制环状布局:使用相应的绘图库创建一个环状布局,确定数据的摆放位置。
  3. 绘制热力图:在环状布局上绘制热力图,通过颜色的不同来表示数据的大小或差异。
  4. 添加其他图层:根据需要,可以在环状热力图中添加聚类树图、标签等其他元素,以增强可视化效果。
  5. 设置样式和标签:调整环状热力图的样式、颜色、标签等细节,使其更具吸引力和清晰度。
  6. 显示和解读:将环状热力图呈现给观众,并解读其中的数据模式、关系和趋势。

环状热力图在生物学、基因组学、社交网络分析等领域得到广泛应用。它能够有效地展示大量的数据,并帮助人们发现隐藏在数据中的规律和结构。

这段代码主要是使用了ggplot2包来绘制热图,并最终实现了环状热图的效果。下面是对代码思路的解释:

  1. 首先,使用set.seed(8)设置了随机数种子,以确保结果的可重复性。

  2. 接着,创建了一个 25x25 的随机矩阵 m,并使用 colnamesrownames 给这个矩阵添加行列名称。

  3. 使用 melt 函数将矩阵 m 转换成长格式的数据框 df,其中包含三列:"x"、"y" 和 "value",分别代表横坐标、纵坐标和值。

  4. 接下来,使用 ggplot 函数创建了一个基础的热图 p1,其中使用 geom_tile 函数绘制了矩形热图,并使用 scale_fill_gradient2 函数设置了颜色渐变。

  5. 然后,通过 xlimylim 函数调整了图形的比例大小,并将调整后的图保存在 p2 中。

  6. 最后,使用 coord_polar 函数将热图转换为环状热图,并将结果保存在 p3 中。

整体思路就是先创建数据,然后使用 ggplot2 包绘制热图,并通过一系列函数调整图形的样式和比例,最终实现了环状热图的效果。

library(reshape)
library(ggplot2)# 创建数据
set.seed(8)
m <- matrix(round(rnorm(200), 2), 25, 25)
colnames(m) <- paste(1:25)
rownames(m) <- paste(1:25)
df <- melt(m)
colnames(df) <- c("x", "y", "value")#ggplot2绘图
p1<-ggplot(df, aes(x = x, y = y, fill = value)) +geom_tile(color = "skyblue") +#添加values值#geom_text(aes(label = value), color = "white", size = 4) +scale_fill_gradient2(low = "#075AFF",mid = "#FFFFCC",high = "#FF0000") +coord_fixed()p1
#调整图形比例大小
p1 + xlim(-10,25) + ylim(-10,25) -> p2
p2#环状热图
p2 + coord_polar(theta = "x", start = pi/4) -> p3
p3

代码美观改进

library(reshape2)
library(ggplot2)# 创建数据
set.seed(8)
m <- matrix(round(rnorm(200), 2), 25, 25)
colnames(m) <- paste(1:25)
rownames(m) <- paste(1:25)
df <- melt(m)
colnames(df) <- c("x", "y", "value")# 创建环状热图
p <- ggplot(df, aes(x = x, y = y, fill = value)) +geom_tile(color = "skyblue") +scale_fill_gradient2(low = "#075AFF",mid = "#FFFFCC",high = "#FF0000") +coord_polar(start = pi / 4) +theme_void() +theme(plot.margin = margin(10, 10, 10, 10))# 调整图形大小和比例
p + xlim(-10, 25) + ylim(-10, 25) +theme(axis.title = element_blank(),axis.text = element_blank(),axis.ticks = element_blank(),panel.grid = element_blank()) +labs(title = "环状热图") +theme(plot.title = element_text(hjust = 0.5)) -> p# 显示环状热图
print(p)

在这个优化的版本中,进行了以下改进:

  1. 添加了 theme_void() 函数来移除默认的背景和网格线,使热图更加简洁。

  2. 使用 theme(plot.margin = margin(10, 10, 10, 10)) 调整了图形的边距,使其在画布中居中显示。

  3. 使用 theme(...) 函数来移除坐标轴、刻度线和网格线,以进一步简化图形。

  4. 使用 labs(title = "环状热图") 添加了一个标题,可以根据需要自定义标题内容。

这些改进旨在提高环状热图的可读性,同时使图形更加美观。你可以将代码复制到R环境中运行,查看优化后的环状热图效果。

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

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

相关文章

K8S-NFS-StorageClass

工作流程 K8s中部署NFS-StorageClass K8s的StorageClass提供了为集群动态创建PV的能力。 1.部署NFS服务 2.选择NFS的Provinisoner驱动 K8S中没有内置的NFS的制备器&#xff0c;而定义StorageClass的时候需要指定制备器&#xff08;Pervisioner&#xff09;,所以需要&#xf…

OpenHarmony—开发及引用静态共享包(API 9)

HAR(Harmony Archive&#xff09;是静态共享包&#xff0c;可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP&#xff0c;不能独立安装运行在设备上&#xff0c;只能作为应用模块的依赖项被引用。 接下来&a…

springboot146基于Spring Boot的可盈保险合同管理系统的设计与实现

可盈保险合同管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本可盈保险合同管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时…

富文本编辑器CKEditor4简单使用-02(常用插件安装及使用)

富文本编辑器CKEditor4简单使用-02&#xff08;常用插件安装及使用&#xff09; 1. CKEditor4 入门2. 下载并安装常用插件——Language插件2.1 下载插件2.2 下载并安装 Language 插件2.2.1 下载 Language 插件2.2.2 下载 Menu Button插件以及后续的各依赖插件2.2.3 安装下载的L…

YOLOv5改进 | Conv篇 | 结合Dual思想利用HetConv创新一种全新轻量化结构CSPHet(参数量下降20W,)

一、本文介绍 本文给大家带来的改进机制是我结合Dual的思想利用HetConv提出一种全新的结构CSPHet,我们将其用于替换我们的C3结构,可以将参数降低越20W,GFLOPs降低至4.1GFLOPs,同时本文的结构比我提出的另一个CSPPC精度更高,但是轻量化效果要差一点同时本文结构为我独家创…

ElasticSearch-IK分词器(elasticsearch插件)安装配置和ElasticSearch的Rest命令测试

四、IK分词器(elasticsearch插件) IK分词器&#xff1a;中文分词器 分词&#xff1a;即把一段中文或者别的划分成一个个的关键字&#xff0c;我们在搜索时候会把自己的信息进行分词&#xff0c;会把数据库中或者索引库中的数据进行分词&#xff0c;然后进行一一个匹配操作&…

ElasticSearch概述及Window和Linux环境下安装

一、ElasticSearch 1、ElasticSearch概述 ES&#xff08;Elasticsearch&#xff09;是一个基于开放源代码的分布式搜索引擎&#xff0c;用于快速和灵活地搜索和分析大量数据。它是构建在Apache Lucene之上的&#xff0c;通过提供一个简单而强大的RESTful API来实现全文搜索、…

麒麟系统—— openKylin 安装 Nginx

麒麟系统—— openKylin 安装 Nginx 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载 nginx三、解压与运行解压检查与编译安装编译运行 四、配置加入到服务中加入环境变量nginx 配置文件 五、常用命令 Nginx 是一款高性能的 HTTP 和反向代理服务器&#xff0c…

Java编程练习之类的封装2

1.封装一个股票&#xff08;Stock&#xff09;类&#xff0c;大盘名称为上证A股&#xff0c;前一日的收盘点是2844.70点&#xff0c;设置新的当前值如2910.02点&#xff0c;控制台既要显示以上信息&#xff0c;又要显示涨跌幅度以及点数变化的百分比。运行效果如下&#xff1a;…

【甲方安全建设】DevOps初体验

文章目录 前言传统的开发方式&#xff1a;Docker-解决环境问题 DevOps-CI/CD走向流水线Jenkins工作流程Git拉取代码Maven构建打包通过SSH连接后端服务器 实现效果 DevSecOps-安全赋能关于安全平台漏洞扫描漏洞预警TODO 前言 临近春节&#xff0c;笔者经过半年北漂&#xff0c;…

Linux系统——防火墙

一、防火墙的认识 引言 安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全…

企业如何对u盘管控,进行U盘管理?公司电脑禁用U盘的方法

随着信息技术的飞速发展&#xff0c;U盘等移动存储设备已成为企业数据传输和存储的重要工具。然而&#xff0c;U盘的滥用和误操作也带来了巨大的安全隐患&#xff0c;如数据泄露、病毒传播等。 因此&#xff0c;对企业而言&#xff0c;如何有效管控U盘的使用&#xff0c;确保数…

Pymysql将爬取到的信息存储到数据库中

爬取平台为电影天堂 获取到的数据仅为测试学习而用 爬取内容为电影名和电影的下载地址 创建表时需要建立三个字段即可 import urllib.request import re import pymysqldef film_exists(film_name, film_link):"""判断插入的数据是否已经存在""&qu…

element表格内多个输入框时如何添加表单校验

以下.vue文件Demo可直接复制运行&#xff1a; 重点&#xff1a; 1&#xff1a;表格数据定义在form里 2&#xff1a;prop需要加索引&#xff1b;索引前的变量不要加form&#xff0c;直接取里边的key&#xff0c;索引后的字段需要和表格里字段属性对应 。:prop"tableInfo.l…

0基础学习VR全景平台篇第140篇:摄影器材保养与维护

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 摄影器材属于精密仪器&#xff0c;在使用过程中会磨损、老化、积灰。如果不对摄影器材进行清洁和保养&#xff0c;油污、灰尘、水渍长期停留在设备上&#xff0c;不仅会大大缩短相机…

从[redis:LinkedList]中学习链表

文章目录 adlistlistNodelistmacros[宏定义]listCreatelistInitNodelistEmptylistReleaselistAddNodeHeadlistLinkNodeHeadlistAddNodeTaillistLinkNodeTaillistInsertNodelistDelNodelistUlinkNodelistIndexredis3.2.100quicklistredis7.2.2quicklist redis的基本数据类型之一…

简单说说mysql的日志

今天我们通过mysql日志了解mysqld的错误日志、慢查询日志、二进制日志&#xff0c;redolog, undolog等。揭示它们的作用和用途&#xff0c;让我们工作中更能驾驭mysql。 redo 日志 如果mysql事务提交后发生了宕机现象&#xff0c;那怎么保证数据的持久性与完整性&#xff1f;…

网站接入QQ登录

开发者认证&#xff0c;创建应用&#xff1a; &#xff08;1&#xff09;先在 QQ 互联 QQ互联管理中心 进行个人开发者认证&#xff0c;并审核 &#xff08;2&#xff09;创建【网站应用】&#xff0c;填写正确信息&#xff0c;获得对应的 appid 与 appkey&#xff0c;并审核…

【机器学习】某闯关类手游用户流失预测

Final Project: 某闯关类手游用户流失预测 1 案例简介 手游在当下的日常娱乐中占据着主导性地位&#xff0c;成为人们生活中放松身心的一种有效途径。近年来&#xff0c;各种类型的手游&#xff0c;尤其是闯关类的休闲手游&#xff0c;由于其对碎片化时间的利用取得了非常广泛…

服务器未启动而端口进程仍在运行如何查看并杀死

首先登录服务器然后查看当前监听的端口&#xff1a; sudo netstat -tuln比如这里的8080&#xff0c;我们此时并未启动服务器&#xff0c;但是它却正在运行&#xff0c;这会导致服务器刚启动就秒挂。如果没有日志的话会让人有点疑惑&#xff0c;这种情况可能是之前运行了该进程…