热图 -- pheatmap or ggplot2

文章目录

  • brief
    • 数据准备
  • pheatmap实例
    • 最朴素的方式
    • 数据缩放
    • 取消聚类
    • 更改每个小方格的大小
    • 聚类以及聚类方式和参数
    • 修改热图呈现的颜色
    • 修改legend
  • ggplot2实例
  • ggplot2实例变式
    • 添加 group bar
    • 做成dotplot
  • pheatmap 多图组合问题

brief

这里主要记录了pheatmap 以及 ggplot2实现热图的步骤:
在这里插入图片描述

数据准备

df_ <- df2[1:50,2:13]
df_ <- apply(df_,MARGIN = 2,FUN = as.numeric)
df_pheatmap::pheatmap(df_)

在这里插入图片描述

pheatmap实例

最朴素的方式

pheatmap::pheatmap(df_)

数据缩放

pheatmap::pheatmap(df_,scale = "column") # scale = "column" / "raw" / "none" 按照行/列进行数据的缩放

取消聚类

pheatmap::pheatmap(df_,cluster_rows = F,cluster_cols = F)

更改每个小方格的大小

pheatmap::pheatmap(df_,cluster_rows = F,cluster_cols = F,cellwidth = 20,cellheight = 20)

聚类以及聚类方式和参数

pheatmap::pheatmap(df_,cluster_rows = T,clustering_distance_rows = "correlation",cluster_cols = T,clustering_distance_cols = "manhattan",clustering_method = "median")
# clustering method has to one form the list: 'ward', 'ward.D', 'ward.D2', 'single','complete', 'average', 'mcquitty', 'median' or 'centroid'.
# 也就是层次聚类中计算距离的方法

修改热图呈现的颜色

pheatmap::pheatmap(df_,color = c('#6699CC','#FFFF99','#CC3333'))

修改legend

pheatmap::pheatmap(df_,legend = T,legend_breaks = c(-3,0,3))  # 自己指定legend在什么位置标数字
pheatmap::pheatmap(df_,legend = T,legend_labels = c("h","m","l")) # 自己指定legend标记的字符
# 当然了还有很多参数,用的时候再看吧
pheatmap::pheatmap(df_,show_colnames = T,show_rownames = T)

ggplot2实例

哪ggplot2可以实现热图嘛?

# 先把长格式数据转变为宽格式数据
df_ <- reshape2::melt(df_)
df_

在这里插入图片描述

p1<-ggplot(df_,aes(x=Var2,y=Var1,fill=value))+xlab("")+ylab("")
p1p2 <- p1+geom_raster()+scale_fill_gradient2(low="#003366", high="#990033", mid="white")+theme_minimal()
p2# geom_raster() geom_rect() and geom_tile() do the same thing ,都是画小方块的,参数不同
# Scales control the details of how data values are translated to visual properties
# scale_*_gradient creates a two colour gradient (low-high), 
# scale_*_gradient2 creates a diverging colour gradient (low-mid-high),
#  scale_*_gradientn creates a n-colour gradient

在这里插入图片描述

ggplot2实例变式

添加 group bar

df_ <- df2[1:50,2:13]
df_ <- as.data.frame(apply(df_,MARGIN = 2,FUN = as.numeric))
df_group <- colnames(df_) %>% as.data.frame() %>% mutate(group=c(rep("ST",3),rep("TZ",3),rep("TL",3),rep("TS",3))) %>%mutate(p="group") %>%ggplot(aes(.,y=p,fill=group))+geom_tile() + scale_y_discrete(position="right") +theme_minimal()+xlab(NULL) + ylab(NULL) +theme(axis.text.x = element_blank())+labs(fill = "Group")#画热图并将以上信息添加进去:
# 先把长格式数据转变为宽格式数据
df_ <- df2[1:50,2:13]
df_ <- apply(df_,MARGIN = 2,FUN = as.numeric)
df_ <- reshape2::melt(df_)
df_p1<-ggplot(df_,aes(x=Var2,y=Var1,fill=value)) #热图绘制
p2 <- p1+geom_raster()+scale_fill_gradient2(low="#003366", high="#990033", mid="white")+geom_tile()+theme_minimal()+theme(axis.text.x =element_text(angle =90,hjust =0.5,vjust = 0.5))+xlab(NULL) + ylab(NULL)
p2 %>%aplot::insert_top(group, height = .05)

在这里插入图片描述

做成dotplot

p1<-ggplot(df_,aes(x=Var1,y=Var2,fill=value))+xlab("")+ylab("")p3 <- p1+scale_color_gradientn(values = seq(0,1,0.2),colours = c('#6699CC','#FFFF99','#CC3333'))+theme_bw()+geom_point(aes(size=value,color=value))+guides(fill="none",color="none",size="none")+theme(panel.grid = element_blank(),axis.text.x =element_text(angle =45,hjust =1))
p3

在这里插入图片描述

pheatmap 多图组合问题

这部分内容来自:https://www.jianshu.com/p/8fc823c39488

在进行多图绘制的时候,用cowplot::plot_grid函数进行多图组合,结果在多图组合的时候,别的ggplot画图的对象没有任何问题,但是pheatmap的出现问题,并抛出如下警告信息:

p4<-cowplot::plot_grid(p1, p2, p3, ncol=1, labels=LETTERS[1:3])
Warning message:
In as_grob.default(plot) :Cannot convert object of class pheatmap into a grob.

cowplot::plot_grid多图组合的话,必须得是ggplot对象,而pheatmap不是ggplot对象,因此才会出现此问题。解决办法如下:

library(pheatmap)
test <- matrix(rnorm(200), 20, 10)
mfs <- mfs_ma <- mfs_fe <- pheatmap(test)
cowplot::plot_grid(mfs$gtable, mfs_ma$gtable, mfs_fe$gtable,ncol= 3, labels=LETTERS[1:3])

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

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

相关文章

GTK渲染摄像头图像数据

GTK渲染摄像头图像数据 1.GDK简介 绘图工具集(GDK&#xff0c;Graphics Drawing Kit)是在GTK 和特定操作系统的应用编程接口(API,Application Program Interface)之间的低级绘图制层—— Linux的API是Xlib。由于GTK和机器的API之间没有直接接口&#xff0c;移植GTK就成为移植G…

Pheatmap热图的绘制及如何调整图片

Pheatmap热图的绘制及如何调整图片 Pheatmap包是R语言绘制热图比较强大的软件包&#xff0c;当然现在也有很多资料介绍这个包的使用&#xff0c;但是今天我写的重点不是如何使用这个包绘制热图&#xff0c;而是如何绘制出更好看的热图。&#xff08;我使用的矩阵是1663x594&am…

unity可视化图表插件XCharts绘制折线图、饼图、柱状图

一、简介 一款基于UGUI的功能强大、易用、参数可配置的数据可视化图表插件。支持折线图、柱状图、饼图、雷达图、散点图、热力图等常见图表。 特性&#xff1a; 内置丰富示例和模板&#xff0c;参数可视化配置&#xff0c;效果实时预览&#xff0c;纯代码绘制。 支持折线图、柱…

日语学习软件推荐——五十音图APP:AI纠正你的日语发音

每个自学日语的人&#xff0c;想必都经历过“哑巴日语”的苦恼。收集了很多学习资料&#xff0c;努力积累词汇量&#xff0c;一开口却暴露了“散装口语”的短板。 但是现在就不怕这个问题啦&#xff0c;五十音图APP可以让你从入门开始&#xff0c;练就一口流利的地道日语&…

白痴学日语系列之初识日语(二)

每日记单词 間[あいだ]0 a i da 间&#xff0c;间隔 【记】あい&#xff08;合い→互相之间&#xff09;だ&#xff08;是&#xff09;→间隔 青[あお]1 a o 蓝色&#xff1b;青色&#xff1b;绿色&#xff1b;不成熟 【记】あ&#xff08;上&#xff09;お&#xff08;う→…

新标日语学习笔记

文章目录 新标日语学习笔记第一章 日语入门1.1 五十音1.2 日语声调1.2.1 声调理解1.2.2 高低音发音1.2.3 简单的高低音发音练习 1.3 浊音和长音1.3.1 浊音1.3.2 长音 1.4 促音和拗音 第二章 课文与笔记2.1 小李是中国人2.1.1 单词2.1.2 语法 新标日语学习笔记 第一章 日语入门…

日语语音识别_日语语音识别软件_日语语音识别在线 - 云+社区 - 腾讯云

广告关闭 腾讯云双11爆品提前享&#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高满返5000元&#xff01; 语气词过滤和句末标点过滤用户自主选择功能 新功能发布录音文件识别产品上线音视频领域模型 新功能发布…

C++制作一款小黑子键盘提示音程序

不好意思我漏出鸡脚了。 首先讲一下思路&#xff0c;这次制作的小黑子相当于键盘提示音&#xff0c;输入J,N,T,M&#xff0c;会发出“鸡你太美”的声音&#xff0c;连续按下JNTM则会发出“你干嘛啊&#xff0c;哎呦”的声音。 完整的工程和代码以及成品已经上传至百度网盘&…

只因小黑子:css动画复习

小黑子的css动画复习 css动画1. transiton 动画过渡1.1 transiton: 某属性1.2 transiton: all2. 动画过渡类型3. 动画过渡单一属性4. transform 2d属性4.1 translate 平移一、translateX(参数) 水平平移二、translateY(参数) 上下平移三、translate(a,b) 水平&#xff0c;上下平…

小黑子的HTML入土过程

小黑子的HTML入土过程 1. HTMLCSS系列教程第一章1.1 了解什么是HTML和CSS1.2 编译器VS Code1.2.1 下载方式和设置1.2.2 VS Code的快捷键基础用法 1.3 了解网页开发1.4 Web前端的三大核心技术1.5 HTML的基本结构和属性1.6 HTML的初始代码1.7 HTML的注释1.8 HTML的语义化1.9 标题…

Python画图之小黑子头像

效果演示 &#x1f438;真爱粉必备知识 倍速*2.0 实现步骤 设置窗口大小和绘画速度。用 penup() 和 goto() 来定位&#xff0c;画出领子和衣服&#xff0c;使用 fillcolor() 和 begin_fill() 开始填充颜色。用 pensize() 和 pencolor() 来调整线条的大小和颜色&#xff0c;画…

用 ChatGPT 秒建大模型,OpenAI 全新插件杀疯了,接入代码解释器一键 get

ChatGPT 可以联网后&#xff0c;OpenAI 还火速介绍了一款代码生成器&#xff0c;在这个插件的加持下&#xff0c;ChatGPT 甚至可以自己生成机器学习模型了。 上周五&#xff0c;OpenAI 刚刚宣布了惊爆的消息&#xff0c;ChatGPT 可以联网&#xff0c;接入第三方插件了&#xf…

什么是元宇宙,什么是AI,什么是chatgpt?什么是星云虚境?

随着现代科技的发展&#xff0c;元宇宙已经不再是科幻电影中的概念&#xff0c;而是逐渐变得真实起来。元宇宙是极为先进的数字世界&#xff0c;它需要人工智能、虚拟现实、区块链、云计算等多种技术的支持。在这个数字空间中&#xff0c;人们可以体验到比现实生活更丰富、更多…

元宇宙大爆炸:开发元宇宙是互联网的接替者?

美国游戏引擎公司Epic Games的创始人CEO蒂姆斯威尼&#xff08;Tim Sweeney&#xff09;宣称&#xff0c;玩家已经可以通过风靡的《堡垒之夜》聚集“元宇宙”的虚拟世界中。近期&#xff0c;美国超人气歌手Ariana Grande在全球不同地区&#xff0c;连续举办了5场演唱会&#xf…

“抢滩”元宇宙:不只Facebook和腾讯

来源 | 01区块链 责编 | Carol Facebook创始人兼首席执行官马克扎克伯格在2021年6月底表示&#xff0c;该公司的未来规划远不止是社交媒体&#xff0c;而是筑造一个元宇宙。扎克伯克宣称&#xff0c;希望在未来用5年左右的时间&#xff0c;将Facebook打造为一家元宇宙公司。 20…

元宇宙GOD新纪元打通元宇宙

J,F,4.5.9.9.9 区块链技术诞生至今已经有十余年了。在国内外不同团队的大力推动下&#xff0c;区块链项目层出不穷&#xff0c;但是对于生活的赋能作用并没有很好地体现出来。区块链技术是一项伟大的革命&#xff0c;但是一项技术如果不能投入实用&#xff0c;和各领域的应用结…

科技新浪推前浪 ChatGPT将元宇宙“拍在沙滩上”?

近期ChatGPT的热度显然已经盖过了元宇宙&#xff0c;回想去年元宇宙大热之际&#xff0c;很多企业纷纷跟进&#xff0c;甚至还有不少公司选择更名以表达All In元宇宙的决心。而如今ChatGPT抢占风头&#xff0c;成为新宠&#xff0c;元宇宙似乎被“抛弃”了&#xff0c;难道元宇…

巴比特 | 元宇宙每日必读:ChatGPT的火热与当年元宇宙的爆火故事如出一辙,科技巨头为何总是喜新厌旧?...

摘要&#xff1a;几乎所有公司都在想方设法与ChatGPT攀上关系&#xff0c;几乎人人都在关注、讨论、试用ChatGPT时&#xff0c;谁还记得Roblox、Clubhouse&#xff1f;Roblox是ChatGPT之前的全球顶流&#xff0c;带火了元宇宙&#xff1b;Clubhouse在Roblox之前也曾短暂红遍全球…

ChatGPT提示词工程(三):Summarizing概括总结

目录 一、说明二、安装环境三、概括总结&#xff08;Summarizing&#xff09;1. 简单地概括总结&#xff0c;只有字数限制2. 概括总结需要关注的某些点 四、用“提取”代替“总结”&#xff08;Try "extract" instead of "summarize"&#xff09;五、概括总…