首页 > 其他分享 >R语言ggplot怎么在热图上标注相关系数

R语言ggplot怎么在热图上标注相关系数

时间:2024-07-01 12:28:14浏览次数:14  
标签:语言 text 相关系数 ggplot ggplot2 geom 热图

1. R语言简介

R语言是一种开源、免费的编程语言,主要用于统计分析、图形化和机器学习。以下是关于R语言的详细介绍:

(1)起源和开发者

R语言由奥克兰大学的Ross Ihaka和Robert Gentleman在1993年开发,旨在提供一种强大的工具,用于处理和分析大型数据集。

(2)主要特点

  • 面向统计:R语言为统计分析提供了一套全面的功能,包括数据处理、建模、可视化和推断统计。

  • 开源:R语言是完全开源的,意味着它是免费的,并且可以由任何人修改和分发。

  • 广泛的社区:R语言拥有一个庞大的用户和开发人员社区,持续贡献和维护该语言。

  • 可扩展:R语言可以通过包进行扩展,这些包提供了额外的功能和功能。

  • 跨平台:R语言可以在Windows、Mac和Linux等不同平台上运行。

(3)应用领域

R语言被广泛用于统计建模、数据可视化、机器学习、生物信息学和金融分析等领域。例如,在生物信息学中,R语言常用于处理和分析基因组数据;在金融分析中,R语言用于风险建模和投资组合优化。

(4)功能

  • 统计建模:R语言可用于构建各种统计模型,如线性回归、非线性回归和时间序列分析。

  • 数据可视化:R语言提供了广泛的数据可视化选项,包括各种图表、图形和地图。

  • 机器学习:R语言可用于执行各种机器学习任务,例如分类、聚类和回归。

(5)优势和不足

  • 优势:R语言拥有强大的统计和图形功能,以及一个庞大的社区支持。它的开源性质也使其具有较低的成本和易于扩展性。

  • 不足:R语言的执行速度相对较慢,尤其是在处理大型数据集时。此外,对于不熟悉统计学的用户来说,R语言的学习曲线可能较陡峭。

(6)使用R语言的知名公司

许多大公司也使用R编程语言,包括Uber、谷歌、Airbnb、Facebook等。

(7)与其他语言的比较

R语言与C语言都是贝尔实验室的研究成果,但两者有不同的侧重领域。R语言是一种解释型的面向数学理论研究工作者的语言,而C语言是为计算机软件工程师设计的。

(8)R语言资源

有许多在线教程、书籍、社区和论坛可供学习R语言,如DataCamp、Coursera、Stack Overflow等。

总之,R语言是一种功能强大的编程语言,特别适用于统计分析和数据可视化。尽管它有一些局限性,但在许多领域仍然被广泛应用。

2. R语言ggplot怎么在热图上标注相关系数

在R语言中,使用ggplot2包创建热图并标注相关系数通常不是一个直接的过程,因为ggplot2主要设计用于创建复杂的数据可视化图形,而热图通常使用pheatmapComplexHeatmapggplot2geom_tile()结合geom_text()来创建。

以下是一个使用ggplot2结合reshape2(用于数据重塑)和corrplot(虽然这个例子中没有直接使用corrplot画图,但是为了计算相关系数矩阵)来创建热图并标注相关系数的详细示例:

首先,我们需要安装并加载必要的包(如果尚未安装):

install.packages("ggplot2")  
install.packages("reshape2")  
install.packages("corrplot") # 用于计算相关系数矩阵,但在此示例中不直接用于绘图  
  
library(ggplot2)  
library(reshape2)  
library(corrplot)

接下来,我们创建一个数据集并计算其相关系数矩阵:

# 创建一个示例数据集  
set.seed(123)  
data <- data.frame(  
  A = rnorm(100),  
  B = rnorm(100, mean = 0.5),  
  C = rnorm(100, mean = -0.5),  
  D = rnorm(100)  
)  
  
# 计算相关系数矩阵  
cor_mat <- cor(data)
然后,我们将相关系数矩阵重塑为长格式,以便ggplot2可以使用:

# 重塑数据为长格式  
melted_cor <- melt(cor_mat)  
  
# 为了在热图上添加文本,我们需要计算标签的位置  
# 这里我们使用一个简单的方法:找到每个单元格的中心  
x_pos <- rep(1:(ncol(cor_mat) - 1) / 2 + 0.5, each = nrow(cor_mat))  
y_pos <- rep(1:nrow(cor_mat), ncol(cor_mat) - 1) / 2 + 0.5  
  
# 创建一个数据框来保存位置信息  
text_pos <- data.frame(Var1 = names(cor_mat)[-ncol(cor_mat)],  
                       Var2 = names(cor_mat)[-1],  
                       x = x_pos,  
                       y = y_pos,  
                       label = format(melted_cor$value, digits = 2)) # 格式化标签为两位小数  
  
# 去除对角线上的值(因为它们总是1)  
text_pos <- text_pos[text_pos$Var1 != text_pos$Var2, ]

最后,我们使用ggplot2创建热图并添加相关系数标签:

ggplot(melted_cor, aes(x = Var2, y = Var1, fill = value)) +  
  geom_tile() +  
  scale_fill_gradient2(low = "blue", high = "red", midpoint = 0, space = "Lab", name="Correlation\n(Pearson)") +  
  theme_minimal() +  
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) +  
  geom_text(data = text_pos, aes(label = label), color = "white") + # 添加文本标签  
  xlab("") +  
  ylab("") +  
  coord_fixed() # 保持x和y轴的比例相同,这对于热图很重要

这个示例提供了一个完整的过程,从计算相关系数矩阵到使用ggplot2创建带有标签的热图。注意,这里使用了format()函数来格式化标签为两位小数,并使用geom_text()函数将标签添加到热图上。此外,coord_fixed()确保x和y轴的比例相同,这对于热图的可读性很重要。

3.如何在R语言中创建热图并标注相关系数

在R语言中,要创建热图并标注相关系数,可以使用ggplot2包结合reshape2包来重塑数据,并使用geom_tile()来绘制热图,geom_text()来添加相关系数标签。以下是一个详细的步骤和代码示例:

首先,安装并加载必要的包(如果尚未安装):

install.packages("ggplot2")  
install.packages("reshape2")  
  
library(ggplot2)  
library(reshape2)

然后,创建一个数据集并计算其相关系数矩阵:

# 创建一个示例数据集  
set.seed(123)  
data <- data.frame(  
  A = rnorm(10),  
  B = rnorm(10, mean = 0.5),  
  C = rnorm(10, mean = -0.5),  
  D = rnorm(10)  
)  
  
# 计算相关系数矩阵  
cor_mat <- cor(data)

接下来,将相关系数矩阵重塑为长格式,并准备用于标注的数据:

# 重塑数据为长格式  
melted_cor <- melt(cor_mat)  
  
# 准备标注的位置和文本  
text_data <- melted_cor  
text_data$Var2 <- factor(text_data$Var2, levels = names(cor_mat)) # 确保x轴的顺序正确  
text_data <- text_data[!text_data$Var1 == text_data$Var2, ] # 去除对角线上的值  
  
# 设置文本标签的位置(这里使用简单的居中方式)  
text_data$x <- as.numeric(text_data$Var2)  
text_data$y <- as.numeric(text_data$Var1)  
text_data$label <- format(text_data$value, digits = 2) # 格式化标签

最后,使用ggplot2绘制热图并添加标签:

ggplot(melted_cor, aes(x = Var2, y = Var1, fill = value)) +  
  geom_tile() +  
  scale_fill_gradient2(low = "blue", high = "red", midpoint = 0, name = "Correlation\n(Pearson)") +  
  theme_minimal() +  
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +  
  xlab("") +  
  ylab("") +  
  coord_fixed() +  
  # 添加相关系数标签  
  geom_text(data = text_data, aes(label = label), color = "white") +  
  # 可选:调整标签位置以避免重叠  
  geom_text_repel(data = text_data, aes(label = label, x = x + 0.5, y = y + 0.5),  
                  color = "white", segment.color = NA, box.padding = unit(0.35, "lines"),  
                  point.padding = unit(0.5, "lines"), force = 4, seed = 123) # 使用ggrepel包(如果已安装)  
  
# 注意:如果我们没有ggrepel包,可以注释掉最后一行的geom_text_repel部分,  
# 但这可能会导致标签重叠,尤其是在小热图上。

如果我们想要避免标签重叠,并且还没有安装ggrepel包,可以考虑以下几种方法:

(1)增大热图的大小。

(2)减少标签的字体大小。

(3)仅标注重要的相关系数(例如,绝对值大于某个阈值的)。

(4)安装并使用ggrepel包(install.packages("ggrepel")),它提供了geom_text_repel()函数,可以智能地避免标签重叠。

以上代码示例提供了一个完整的流程,从计算相关系数矩阵到使用ggplot2创建带有标签的热图。

标签:语言,text,相关系数,ggplot,ggplot2,geom,热图
From: https://blog.csdn.net/m0_72958694/article/details/140096765

相关文章

  • R语言ggplot怎么在热图上标注相关系数
    1.R语言简介R语言是一种开源、免费的编程语言,主要用于统计分析、图形化和机器学习。以下是关于R语言的详细介绍:(1)起源和开发者R语言由奥克兰大学的RossIhaka和RobertGentleman在1993年开发,旨在提供一种强大的工具,用于处理和分析大型数据集。(2)主要特点面向统计:R语言为统计......
  • ggplot2绘制采样地,手动批量指定颜色、性状、大小、设置图例
     001、原始数据LongitudeLatitudediqusubspenum-10439West_EuropeBos_taurus10-356West_EuropeBos_taurus30-351West_EuropeBos_taurus202-44Central_South_EuropeBos_taurus26245Central_South_EuropeBos_tauru......
  • 文章MSM_metagenomics(六):复杂热图绘制
    欢迎大家关注全网生信学习者系列:WX公zhong号:生信学习者Xiaohong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍本教程将使用基于R的函数在复杂热图上绘制物种的丰度或流行度。数据大家通过以下链接下载数据:百度网盘链接:https://pan.baidu.com/s/1f1SyyvRfpNVO3sLYEb......
  • R可视化:微生物相对丰度或富集热图可视化
    欢迎大家关注全网生信学习者系列:WX公zhong号:生信学习者Xiaohong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍热图(Heatmap)是一种数据可视化方法,它通过颜色的深浅或色调的变化来展示数据的分布和密度。在微生物学领域,热图常用于表示微生物在不同分组(如不同的环境......
  • 在Matlab中如何计算决定系数R^2和相关系数r
    Problem当你使用polyfit函数进行多项式拟合之后,你希望计算决定系数或者相关系数看看拟合效果如何。聪明的你肯定觉得聪明的Matlab的polyfit函数的返回值中会有\(R^2\)或者\(r\)吧。你尝试disp了一下,发现有一个结构体\(S\)。再查一查帮助文档,发现误差估计结构体\(S\)中只有一个......
  • 如何用R语言ggplot2画折线图
    文章目录前言一、数据集二、ggplot2画图1、全部代码2、细节拆分1)导包2)创建图形对象3)主题设置4)轴设置5)图例设置6)颜色7)保存图片前言一、数据集数据下载链接见文章顶部数据:library(readxl)data<-read_excel("fig3_line.xlsx",sheet="Sheet1")二、gg......
  • knit样式 + ggplot 样式
    knit{rsetup,include=FALSE}knitr::opts_chunk$set(echo=TRUE)knitr::opts_chunk$set(warning=FALSE,message=FALSE)knitr::opts_chunk$set(tidy=TRUE,tidy.opts=list(width.cutoff=60))library(tidyverse)library(knitr)ggplot箱线图案例#Loadthegg......
  • 【图像融合】基于小波变换实现高光谱和多波段遥感影像融合,熵值 相关系数 光谱扭曲度
     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。......
  • ggplot 中绘图设置 轴标签和标题与绘图区域的间距
     001、基础绘图library(ggplot2)p<-ggplot(faithful,aes(x=eruptions,y=waiting))+geom_point()p 002、调整标签刻度到绘图区域的间距p+theme(axis.text.x=element_text(vjust=-8))##调整x标签刻度到绘图区域的间距 003、调整绘......
  • 基本概念(二):方差、协方差、相关系数 原点矩和中心矩
    方差期望反应的时均值概念,方差反应的则是数据的波动概念,为了防止±波动在求和过程中抵消以及防止求abs导致的不可导问题,我们使用平方来统计波动数据。随机变量的方差定义为:\[D(X)=E[(X-E(X))^2]\]对上式展开:\[D(X)=E\lbraceX^2-2XE(X)+E(X)^2\rbrace=\\E(X^2)-......