环状热力图R语言画法

news2024/7/6 19:20:23

环状热力图(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.coloradmin.cn/o/1426966.html

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

相关文章

“欢天喜地迎新春”下姜村邻里守望写对联活动

卯兔追冬去&#xff0c;辰龙报春来。空谷幽香谱佳期&#xff0c;红联金句寄吉祥。春联是我国特有的文学形式&#xff0c;贴春联是继承传统习俗的一种方式&#xff0c;是对祖先的尊敬&#xff0c;对传统的继承。春节前夕&#xff0c;家家户户贴上红红的春联&#xff0c;一副副透…

前妻(C#)-基础03-枚举-预处理指令

前妻C#-基础语法03 枚举关于控制台IO及注释C#预处理指令 枚举 枚举是用户定义的整数类型。在声明一个枚举时&#xff0c;要指定改枚举的实例可以包含的一组可接受的值。不仅如此&#xff0c;还可以给值指定易于记忆的名称&#xff0c;如果在代码的某个地方&#xff0c;要试图把…

【SpringCloud】使用OpenFeign进行微服务化改造

目录 一、需求与背景二、OpenFeign 远程调用技术原理三、项目代码演示3.1 引入依赖3.2 实现OpenFeign注解修饰接口3.3 指定 OpenFeign 远程调用接口的扫描路径 四、OpenFeign 在日志中打印Request和Response五、OpenFeign 客户端超时配置六、使用 OpenFeign 实现服务降级6.1 实…

QT SQL

QT SQL模块提供数据库编程的支持&#xff0c;支持多种常见的数据库&#xff1a;MySQL\Oracle\MS SQL Server\SQLite等。SQL模块包含多个类&#xff0c;可以实现&#xff1a;数据库连接、SQL语句执行、数据获取与界面显示 等功能。数据 与 界面间用Model\View架构。 一、 二、Q…

禅道列表页编辑页添加页自定义字段

1&#xff0c;数据库表 zt_story 添加自定义字段 bakDate1&#xff0c;bakDate2&#xff0c;bakDate3&#xff0c;bakDate4 2&#xff0c;在 /opt/lampp/htdocs/zentaopms/extension/custom/story/ext/config 中添加bakDate.php文件 <?php $config->story->datatab…

【2024美国大学生数学建模竞赛】2024美赛C题网球运动中的势头,网球教练4.0没人比我更懂这个题了!!!

【2023美国大学生数学建模竞赛】2024美赛C题 问题分析、数学模型、实现代码、完整论文 引言 本人是计算机博士&#xff0c;拥有10年网球球龄&#xff0c;2023年的温网决赛&#xff0c;熬夜到半夜全称观看完了直播&#xff0c;对于网球规则、比赛的数据非常熟悉&#xff0c;这个…

【代码随想录-链表】环形链表 II

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

windows下使用verdaccio构建npm私服环境

一.背景 npm太慢了&#xff0c;每次jenkins自动构建等太久&#xff0c;我虽然是后端coder&#xff0c;也看不惯。本文目的只是说明怎么搭建npm私服&#xff0c;我现在只想构建快一点。所以&#xff0c;暂时没有考虑多个开发者将自定义组件上传到私库并共享的问题&#xff0c;以…

Linux中判断文件系统的方法

文章目录 Linux中判断文件系统的方法1.使用mount命令2.使用blkid命令3.使用file命令4.使用fstab文件5.使用df命令&#xff08;这个用的比较多&#xff09;6.使用fsck命令7.使用lsblk命令(推荐-简单好用) Linux中判断文件系统的方法 1.使用mount命令 # 这样查看的只有已经挂载…

Python系列-字典

&#x1f308;个人主页: 会编程的果子君 ​&#x1f4ab;个人格言:“成为自己未来的主人~” ​ 目录 ​ 字典是什么 创建字典 查找key 新增/修改元素 删除元素 遍历字典元素 取出所有的key和value 合成的key类型 ​编辑 小结 字典是什么 字典是一种存储键值对的结…

D2632——LDO系列电路,高精度、大电流、低压差。最大输出电流可达3A,应用于汽车电子设备等产品中

D2632是一款高精度、大电流、低压差电压调整器。主要作为电源装置提供高效的电压调整。 最大输出电流可达3A&#xff0c;并且外接器件少&#xff0c;拥有输出电压(ADJ) 可调特点。 主要特点&#xff1a; 1. 低压差(满载350mV); 2. 地电流小; 3. 精确度保证在士1%; 4. 非常快速…

C++中的字符串翻转算法解析

个人主页&#xff1a;[PingdiGuo_guo] 收录专栏&#xff1a;[C干货专栏] 大家好&#xff0c;今天我们来学一下C里的一个知识&#xff1a;字符串翻转。 目录 1.题目 描述 输入描述 输出描述 输入数据 1 输出数据 1 提示 2.解决题目 1.所需知识点 2.算法分析 1. 拼接…

【PostgresSQL系列】 ltree简介及基于SpringBoot实现 ltree数据增删改查

本文将对PostgresSQL中的ltree进行相关概念介绍&#xff0c;并以示例代码讲解ltree数据增删改查功能的实现。 作者&#xff1a;后端小肥肠 目录 1.前言 2. 基础概念 2.1. ltree 2.2. lquery 2.3. ltxtquery 2.4. ltree函数及操作符 2.4.1. ltree函数 2.4.2. ltree操作符…

AJAX-认识URL

定义 概念&#xff1a;URL就是统一资源定位符&#xff0c;简称网址&#xff0c;用于访问网络上的资源 组成 协议 http协议&#xff1a;超文本传输协议&#xff0c;规定浏览器和服务器之间传输数据的格式 协议范围&#xff1a;http,https,... 域名 域名&#xff1a;标记服务…

2024年美赛数学建模F题思路分析 - 减少非法野生动物贸易

# 1 赛题 问题F&#xff1a;减少非法野生动物贸易 非法的野生动物贸易会对我们的环境产生负面影响&#xff0c;并威胁到全球的生物多样性。据估计&#xff0c;它每年涉及高达265亿美元&#xff0c;被认为是全球第四大非法交易。[1]你将开发一个由数据驱动的5年项目&#xff0c…

一键部署自己的chatgpt4

效果 安装 docker pull hlohaus789/g4f docker run -d -p 10036:8080 -p 1337:1337 -p 7900:7900 --shm-size"2g" hlohaus789/g4f:latest镜像比较大,大约1.82G 使用 浏览器打开 http://192.168.168.111:10036/ 愉快地使用吧

使用Python的Turtle模块简单绘制烟花效果

import turtle import random# 初始化屏幕 screen turtle.Screen() screen.bgcolor("black") screen.title("烟花模拟")# 创建一个Turtle来绘制烟花 firework turtle.Turtle() firework.hideturtle() firework.speed(0) # 设置绘图速度为最快# 绘制烟花…

nrm切换镜像源-yarn不生效问题

在说这问题前&#xff0c;大家肯定知道nvn管理node版本&#xff0c;不懂的朋友直接看此文&#xff1a; nvm - nodejs版本管理工具&#xff1a;https://blog.csdn.net/tianlu930/article/details/135988727 要安装node自带npm其实不好用&#xff0c;一般都用再装yarn&#xff0c…

gtkmm xml ui 例子(from string)

文章目录 前言来看一个从字符串中生成UI的例子 前言 glade生成的xml格式不被gtkmm4支持, 需要作修改 来看一个从字符串中生成UI的例子 #include <gtkmm/application.h> #include <gtkmm.h> #include <iostream> using namespace std;class ExampleWindow :…

Redis的bitmap使用不当,我内存爆了

背景 最近发现Redis的内存持续暴涨&#xff0c; 涨的有点吓人&#xff0c;机器都快扛不住了&#xff0c;不得不进行Redis内存可视化分析&#xff0c;发现大量的String类型的大key 经分析&#xff0c;最近上线了页面UV的统计&#xff0c;那目前如何做的呢&#xff1f; 通过访…