使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图

news2024/11/18 22:52:45

      大家好,我是带我去滑雪!

      一幅精美的科研绘图会有诸多益处,精美的图像可以更好地传达研究结果和数据分析的重要信息。通过使用清晰、直观和易于理解的图像,可以更好地向读者展示研究的发现,有助于读者理解和解释数据。还可以增加研究报告或论文的可视化效果,使其更具吸引力和可读性。在学术界中,精美的图像常常吸引编辑和评审人员的注意,并提高研究发表的机会。此外,在学术会议或研究展示中展示精美图像也有助于引起其他研究者的兴趣和讨论。

     本文分别介绍使用R语言中的ggplot包绘制气泡图、使用ComplexHeatmap包绘制带有显著性标记的热力图以及使用ggplot2包绘制渐变曲线图。

目录

1、使用ggplot绘制气泡图

(1)设置工作路径、安装并调用相关包

(2)导入数据

(3)绘制气泡图

2、使用ComplexHeatmap包绘制带有显著性标记的热力图

(1)安装并调用相关包

(2)导入数据集

(3)计算相关系数,并将结果中的P值替换为显著性标记

3、绘制渐变曲线图

(1)安装并调用包、导入数据

(2)绘制曲线图

(3)为图片添加渐变效果


1、使用ggplot绘制气泡图

(1)设置工作路径、安装并调用相关包

rm(list=ls())#清除全局环境变量
setwd('E:/工作/硕士/博客/博客39-使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图')
install.packages("ggprism")
library(ggplot2)
library(ggprism)
library(RColorBrewer) 
library(grid)
library(scales)

(2)导入数据

data=read.table("E:/工作/硕士/博客/博客39-使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图/data.csv",header=TRUE,sep=",")
head(data)

输出结果:

        x1  x4   x9  x6
  1     2    0   14   2
  2     4    0   18   0
  3     2    2   18   1
  4     4    3    6    1
  5     3    2    7    2
  6     3    2    5    1

(3)绘制气泡图

ggplot(dd,aes(x1,x2,color=x3,size=x4,fill=x3))+
  geom_point(color="blue",
  #气泡边框色
             shape=21,alpha=0.9)+
  #形状
  scale_size_continuous(range = c(1, 15))+
  #气泡的相对大小
  theme_bw()+
  theme(panel.grid = element_blank(), 
  #添加画布背景
        axis.line=element_line(),
  #坐标轴的线设为显示
        axis.text=element_text(color='black',size=12),
        legend.text = element_text(color='black',size=12),
        axis.title= element_text(size=12),
        axis.text.x=element_text(vjust = 1,hjust = 1),
        legend.key = element_blank())+
  scale_fill_manual(values=c("skyblue1","pink","turquoise1","red","sienna1"))+
  #指定气泡颜色
  labs(x = 'x', # 定义x轴文本
       y = 'y')# 定义y轴文本

#调整背景色
color <- colorRampPalette(brewer.pal(11,"BrBG"))(30)
#添加背景
grid.raster(alpha(color, 0.2), 
            width = unit(1, "npc"), 
            height = unit(1,"npc"),
            interpolate = T)

输出结果:

2、使用ComplexHeatmap包绘制带有显著性标记的热力图

(1)安装并调用相关包

install.packages("ComplexHeatmap")
install.packages("psych")
install.packages("ComplexHeatmap")
install.packages("BiocManager")
install.packages("circlize")
library(psych)
library(BiocManager)
if (!require("BiocManager"))
  install.packages('BiocManager') 
if (!require("ComplexHeatmap"))
  BiocManager::install('ComplexHeatmap') 
library(ComplexHeatmap)
library(circlize)

(2)导入数据集

dd=read.table("E:/工作/硕士/博客/博客39-使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图/data1.csv",header=TRUE,sep=",")
head(dd)

输出结果:

    x1 x2     x3      x4 x5 x6  x7   x8    x9   y1
1  2    2   78.60    0  1    2   1     58   14   210
2  4    2   98.00    0  1    0   1   2337  18  433
3  2    1   58.10    2  1    1   1     25    18  255
4  4    2  118.00   3  0    1   0   2106    6  195
5  3    1   97.70    2  0    2   0  1533     7  150
6  3    2   115.94  2  1    1   1     47      5   570

(3)计算相关系数,并将结果中的P值替换为显著性标记

ct1 <- corr.test(dd,method = "pearson")
#提取相关系数
r2 <- ct1$r
#提取p值矩阵;
p2 <- ct1$p
#使用显著性星号标记进行替换;
p2[p2>=0 & p2 < 0.001] <- "***"
p2[p2>=0.001 & p2 < 0.01] <- "**"
p2[p2>=0.01 & p2 < 0.05] <- "*"
p2[p2>=0.05 & p2 <= 1] <- ""
p2

输出结果:

     x1    x2      x3    x4    x5    x6    x7    x8    x9    y1   
x1 "***" "***" "***" ""    "***" ""    ""    ""    "***" "***"
x2 "***" "***" "***" ""    "***" ""    "*"   ""    "***" "***"
x3 "***" "***" "***" ""    "***" ""    ""    "*"   "***" "***"
x4 ""     "**"   ""    "***" "*"   ""    "*"   "*"   "*"   "***"
x5 "***" "***" "***" "**"  "***" "***" "***" ""    "***" "***"
x6 ""        ""    ""    ""    "***" "***" "**"  ""    ""    ""   
x7 "*"   "***"    ""    "**"  "***" "***" "***" ""    ""    "***"
x8 ""       "*"  "***"  "**"  "**"  ""    ""    "***" "***" "***"
x9 "***" "***" "***" "**"  "***" "*"   ""    "***" "***" "***"
y1 "***" "***" "***" "***" "***" ""    "***" "***" "***" "***"

(4)绘图设置

range(r2)
#颜色映射函数
col_fun1 = colorRamp2(c(-0.1794705, 0, 1), c("#0f86a9", "white", "#FC8452"))
col_fun2 = colorRamp2(c(-0.1794705, 0, 1), c("#A5CC26", "white", "#FF7BAC"))
col_fun3 = colorRamp2(c(-0.1794705, 0, 1), c("#3FA9F5", "white", "#FF931E"))
col_fun4 = colorRamp2(c(-1, 0, 1), c("#ffa500", "white", "#B3A9EB"))
col_fun(seq(-2, 2))

#热图格子大小设置;
cellwidth = 0.7
cellheight = 0.7
cn = dim(r2)[2]
rn = dim(r2)[1]
w=cellwidth*cn
h=cellheight*rn
#绘制热图显示显著性星号标记;
Heatmap(r2,name ="r", col = col_fun2,
        #格子大小设置;
        width = unit(w, "cm"),
        height = unit(h, "cm"),
        rect_gp = gpar(col = "white", lwd = 1.5),
        border_gp = gpar(col = "#0f86a9",lty = 2,lwd = 1.2),
        #聚类树样式设置;
        column_dend_height = unit(1.5, "cm"),
        row_dend_width = unit(1.5, "cm"),
        column_dend_gp = gpar(col = "#0f86a9",lwd = 1.4),
        row_dend_gp = gpar(col = "#0f86a9",lwd = 1.4),
        #设置聚类gap数量和大小;
        row_split = 2, column_split = 2,
        row_gap = unit(2, "mm"),
        column_gap = unit(2, "mm"),
        #行列标签文字样式设置;
        row_title = NULL,column_title = NULL,
        column_names_gp = gpar(fontsize = 8),
        row_names_gp = gpar(fontsize = 8),
        #图例样式设置;
        heatmap_legend_param = list(legend_height = unit(3, "cm"),
                                    grid_width = unit(0.4, "cm"),
                                    labels_gp = gpar(col = "gray20",
                                                     fontsize = 8)),
        #显示星号标记设置;
        #vjust垂直微调星号的位置;
        cell_fun = function(j, i, x, y, width, height, fill) {
          grid.text(p2[i, j], x, y, vjust = 0.7,
                    gp = gpar(fontsize = 13,col="white"))
        })

输出结果:

      换一种样式:

#绘制热图,显示相关性系数,保留两位小数;
Heatmap(r2,name ="r", col = col_fun1,
        #格子大小设置;
        width = unit(w, "cm"),
        height = unit(h, "cm"),
        rect_gp = gpar(col = "white", lwd = 1.5),
        border_gp = gpar(col = "#0f86a9",lty = 2,lwd = 1.2),
        #聚类树样式设置;
        column_dend_height = unit(1.5, "cm"),
        row_dend_width = unit(1.5, "cm"),
        column_dend_gp = gpar(col = "#0f86a9",lwd = 1.4),
        row_dend_gp = gpar(col = "#0f86a9",lwd = 1.4),
        #设置聚类gap数量和大小;
        row_split = 2, column_split = 2,
        row_gap = unit(2, "mm"),
        column_gap = unit(2, "mm"),
        #行列标签文字样式设置;
        row_title = NULL,column_title = NULL,
        column_names_gp = gpar(fontsize = 8),
        row_names_gp = gpar(fontsize = 8),
        #图例样式设置;
        heatmap_legend_param = list(legend_height = unit(3, "cm"),
                                    grid_width = unit(0.4, "cm"),
                                    labels_gp = gpar(col = "gray20",
                                                     fontsize = 8)),
        #显示数值设置;
        #i,j对应数据矩阵的行和列索引;
        #x,y对应热图cell中心点坐标;
        cell_fun = function(j, i, x, y, width, height, fill) {
          grid.text(sprintf("%.2f", r2[i, j]), x, y,
                    gp = gpar(fontsize = 6))
        })

输出结果:

3、绘制渐变曲线图

(1)安装并调用包、导入数据

install.packages("ggplot2")
library(ggplot2) 
setwd('E:/工作/硕士/博客/博客39-使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图')
data=read.table("E:/工作/硕士/博客/博客39-使用R绘制气泡图、带有显著性标记的热力图、渐变曲线图/data2.csv",header=TRUE,sep=",")

(2)绘制曲线图

pdf("plot.pdf",width = 5.5, height = 3.7)
ggplot(data,aes(x=X,y=Y,fill=type))+
  geom_line(color = "#dcedf5")+  #线图
  coord_cartesian(xlim = c(4.5, 110))+ #设置X轴显示范围
  scale_y_continuous(breaks = seq(0,10,2))+ #设置y轴刻度范围和间隔
  scale_x_continuous(breaks = seq(0,100,20))+ #设置x轴刻度范围和间隔
  labs(x="Hz",
       y="Sb")+  #设置坐标轴标题
  theme_bw()+  #设置主题
  theme(panel.grid = element_blank(),  #取消背景网格
        axis.text = element_text(size = 10), #设置刻度值字体大小
        axis.title = element_text(face = "bold") #设置字体
  )+
  geom_segment(aes(x = 55, y = 1, xend = 78, yend = 5),size= 0.3) +
  geom_segment(aes(x = 48, y = 5, xend = 78, yend = 7.5),size= 0.3) +
  geom_segment(aes(x = 46, y = 8, xend = 76, yend = 8.5),size= 0.3) +
  geom_segment(aes(x = 47, y = 9.5, xend = 74, yend = 9.5),size= 0.3) +
  geom_text(aes(x = 87, y = 5, label = "noise"))+
  geom_text(aes(x = 84, y = 7.5, label = "3.3 pW"))+
  geom_text(aes(x = 82, y = 8.5, label = "20 pW"))+
  geom_text(aes(x = 80, y = 9.5, label = "78 pW"))
dev.off()

输出结果:

(3)为图片添加渐变效果

       这里使用 Adobe Illustrator软件进行处理,博主最近也在学习这个软件,可以一起交流!Adobe Illustrator在科研中作为一款专业的矢量绘图软件,可以提供强大的绘图、插图、编辑和设计功能,帮助科研人员创建高质量、专业外观的科学图表、插图、海报和展示资料,以及进行图像修饰和文字设计。它能够满足科研人员对图像设计和编辑的各种需求,并提升研究成果的可视化和呈现效果。

处理后的渐变曲线图:

需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138 
提取码:2138 
--来自百度网盘超级会员V5的分享


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

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

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

相关文章

JAVA开发(记一次504 gateway timeout错误排查过程)

一、问题与背景&#xff1a; 最近在发布一个web项目&#xff0c;在测试环境都是可以的&#xff0c;发布到生产环境通过IP访问也是可以的&#xff0c;但是通过域名访问就出现504 gateway timeout。通过postman去测试接口也是一样。ip和端口都可以通&#xff0c;域名却不行&…

如何在矩池云上运行 AI 图像编辑工具 DragGAN

5 月&#xff0c;DragGAN 横空出世&#xff0c;在开源代码尚未公布前&#xff0c;就在Github上斩获近 20000 Star&#xff0c;彼时&#xff0c;页面上只有效果图和一句“Code will be released in June”&#xff0c;然而这也足够带给人们无限期待。 在6月末&#xff0c;在若干…

SpringBoot最多可以处理多少个请求?

SpringBoot最多可以处理多少个请求&#xff1f; SpringBoot夺命连环14问&#xff0c;1天刷完别人半个月的springboot面试内容&#xff0c;比啃书效果好多了&#xff01;_哔哩哔哩_bilibili 最小线程数&#xff1a;最少的厨师的量&#xff0c;饭店人不多的时候的量。 最大线程数…

微信可以自动跟圈的软件有吗?

对于许多人而言&#xff0c;每日发朋友圈已成为必要的任务之一&#xff0c;如同上学时老师检查作业般。但发圈何尝不像是写作业一样呢&#xff1f;有许多小号需发几十上百条朋友圈&#xff0c;令人感到枯燥、浪费时间。再加上我们还有其他事务要处理&#xff0c;例如服装店老板…

让你不再疑惑ai绘画生成器有哪些

有一天&#xff0c;设计师小李接到了一份任务&#xff0c;要在短时间内完成一幅复杂的插画。小李感到非常苦恼。于是&#xff0c;他开始寻找一种新的解决方案。通过搜索和咨询同事&#xff0c;小李发现通过使用ai绘画工具可以提高快速绘制图画的速度.那么&#xff0c;你知道最新…

paddlespeech 声纹识别embedding向量提取

参考&#xff1a; https://aistudio.baidu.com/aistudio/projectdetail/4353348 https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/demos/speaker_verification/README_cn.md 注意 1&#xff09;安装paddlespeech&#xff0c;参考&#xff1a; https://blog.csdn.n…

儿童牙刷语音方案,低功耗语音芯片NV040C,支持UART指令

随着人们对生活品质的追求越来越高&#xff0c;家庭中的日常用品也开始注重便携性、功能性与智能化。牙刷作为家庭必备的清洁用品&#xff0c;同样也在走向智能化的方向。为此&#xff0c;市场上出现了一些支持语音指令的儿童牙刷语音方案&#xff0c;其中低功耗语音芯片NV040C…

TypeScript 中接口类型【Interfaces】的定义使用解读

导语&#xff1a; 什么是 类型接口&#xff1f; 在面向对象语言中&#xff0c;接口&#xff08;Interfaces&#xff09;是一个很重要的概念&#xff0c;它是对行为的抽象&#xff0c;而具体如何行动需要由类&#xff08;classes&#xff09;去实现&#xff08;implement&#x…

从“裸辞”到“终于找到理想工作”,面试了37家公司,经过5个月的时间终于如愿以偿。

软件测试行业裸辞5个月&#xff0c;面试了37家公司&#xff0c;终于找到理想工作了... 在软件测试行业里工作已经有7年的时间了。然而&#xff0c;在今年初&#xff0c;我因为一些原因选择了离开原来的公司&#xff0c;成为了一名“裸辞族”。我并不后悔这个决定&#xff0c;因…

QT Creator上位机学习(一)基本类别及主体框架解析

系列文章目录 文章目录 系列文章目录前言基础认识多种项目3种基类文件管理编译 项目程序项目管理文件UI文件信号与槽主程序窗体头文件窗体源文件 前言 之前也学习制作过串口上位机和利用Qchart完成数据的曲线显示等等&#xff0c;但大多只是对网上的程序进行拼接&#xff0c;这…

15.RocketMQ中的负载均衡

1.3负载均衡 1.3.1什么是负载均衡 负载均衡(Load Balance)是一种技术解决方案。用来在多个资源(一般是服务器)中分配负载&#xff0c;达到最优化资源使用&#xff0c;避免单台服务器过载。 RocketMQ中的负载均衡主要可以分为生产者发送消息的负载均衡和消费者订阅消息的负载均衡…

记一次phpMyAdmin弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量phpMyAdmin登录请求&#xff0c;现需根据流量情况进行…

leetcode887. 鸡蛋掉落(动态规划-java)

鸡蛋掉落 leetcode887. 鸡蛋掉落题目描述暴力递归 二分查找代码演示 动态规划代码演示 动态规划专题 leetcode887. 鸡蛋掉落 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/super-egg-drop 题目描述 给你 k 枚相同的鸡…

Python实现所有英雄皮肤图片采集,超高清

目录标题 前言环境使用:模块使用:代码基本四个步骤:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 环境使用: Python 3.8 Pycharm 模块使用: requests —> 数据请求模块 需要安装 re 正则表达式 内置模块 不需要安装 os 文件操作模块 内置模块 不需…

记一次Weblogic控制台弱口令爆破事件应急响应

为方便您的阅读&#xff0c;可点击下方蓝色字体&#xff0c;进行跳转↓↓↓ 01 事件背景介绍02 流量分析过程03 事件分析结果04 安全加固建议 01 事件背景介绍 某内部应急演练中&#xff0c;安全部门在安全设备上观察到大量Weblogic控制台登录请求&#xff0c;现需根据流量情况…

Rancher集群搭建

前言 随着容器的普及和Kubernetes 的日渐成熟&#xff0c;企业内部运行多个Kubernetes 集群已变得颇为常见&#xff0c;然而部署kubernetes集群的方式也多样化&#xff0c;二进制部署、rancher、kubeadm、minikube等。然而本篇文章主要讲解的是如何使用rancher快速部署一个k8s集…

Linux:LAMP搭建(全源码包安装)

LAMP 就是 Linux Apache Mysql PHP/Python 目录 Linux安装 Apache安装 Mysql安装 安装PHP 安装PHP扩展包 编译安装PHP PHP 添加优化模块 测试网页协同工作 Linux安装 虚拟机安装 (1条消息) VMware&#xff1a;安装centos7_鲍海超-GNUBHCkalitarro的博客-CSD…

从0到1精通自动化测试,pytest自动化测试框架,doctest测试框架(十四)

一、前言 doctest从字面意思上看&#xff0c;那就是文档测试。doctest是python里面自带的一个模块&#xff0c;它实际上是单元测试的一种。 官方解释&#xff1a;doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段&#xff0c;然后尝试执行并验证结果 doctest测试…

iostat命令详解

语法&#xff1a; iostat [ 选项 ] [<时间间隔> <次数> ] 支持的参数及参数详解&#xff1a; -c&#xff1a;仅显示CPU统计信息&#xff0c;与-d选项互斥 -d&#xff1a;仅显示磁盘统计信息&#xff0c;与-c选项互斥 -h&#xff1a;使用NFS&#x…

Prophet算法框架预测输出及使用方法

Prophet 时间序列预测框架入门实践笔记 接续上文&#xff0c;预测结果&#xff1a; forecast m.predict(future) forecast[[ds, yhat, yhat_lower, yhat_upper]].tail(48)forecast 是Pandas的DataFrame&#xff0c;数据项及含义如下&#xff1a; ‘ds’&#xff1a; 是日期时…