快速实现是搜索帮助文档的首要目的,所以此处涉及实战的文章一概略去传统帮助文档的理论部分,直接上代码加注释!

本文将介绍R语言下利用ggplot2包制作heatmap的代码

-------------------------我是分割线-------------------------------

测试数据:

数据中的空白行、列用以分割heatmap,区别不同的数据处理,如不需要删除即可。

1、制作连续型

 #引入包
library(ggplot2)
library(reshape)
library(zoo) #载入windows下的字体
library(extrafont)
#loadfonts(device="win")
#查看字体库
#fonts() #读取数据
mydata <- read.csv("G:\\R\\test\\Book3.csv",sep=",",header=TRUE)
mydata #数据转换成 ‘rowname, columnname, value’这样形式的数据
mydata.m <- melt(mydata) ##设置图形样式
theme_change <- theme(
#设置xy轴字体样式、大小等 colour="grey50",
axis.text.x=element_text(family = "Arial",size=12, colour="black",angle = 0),
axis.text.y=element_text(family = "Arial",size=12, colour="black",face="italic"),
axis.title.x=element_text(family = "Arial",angle=0, face="plain", size=14),#font face ("plain", "italic", "bold", "bold.italic")
axis.title.y=element_text(family = "Arial",angle=270, face="plain", size=14),
axis.line = element_blank(),
axis.ticks = element_blank(),
#设置图例字体样式大小
#legend.text
#legend.title
#legend.position #the position of legends ("none", "left", "right", "bottom", "top", or two-element numeric vector)
#清空背景及xy轴样式
plot.background = element_blank(),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
panel.background = element_blank(),
panel.border = element_blank()
) ## 输出图形 #Arial
p <- ggplot(data = mydata.m, aes(x = variable, y = Name, fill = value)) +
geom_tile()+
#geom_tile(color="white", size=0.1) + #color="white", size=0.1设置栅格之间的分割线颜色及大小
theme_classic() + #去掉灰快
theme_change +
scale_x_discrete(limits=c("BS","X", "BS1","RS"),labels=c("BS","","BS","RS"))+#x轴排序及标注
scale_y_discrete(limits=c("B","C","NA1","Meth1", "Meth2","Meth3","Meth4","NA2","S","G","M"),labels=c("B","C","","Meth1", "Meth2","Meth3","Meth4","","S","G","M"))+ #y轴排序及标注
xlab('row name1') +
ylab('column name') + #更改行名和列名
scale_fill_gradient(na.value='#FFFFFF',low = 'green', high = 'red')+ #修改图例名字以及图中颜色
#scale_fill_gradient2('legend name', na.value='#FFFFFF',low = '#8856a7', high = '#636363', mid = '#ece7f2')+ #修改图例名字以及图中颜色
geom_text(aes(label=round(value,2)), family="Arial", angle=0, colour = "black",size=5)#显示每个栅格的数值及字体设置
p #legend的设置参见http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/

输出效果图:

2、分级别显示

 #引入包
library(ggplot2)
library(reshape)
library(zoo) #载入windows下的字体
library(extrafont)
#loadfonts(device="win")
#查看字体库
#fonts() #读取数据
mydata <- read.csv("G:\\R\\test\\Book3.csv",sep=",",header=TRUE)
mydata #数据转换成 ‘rowname, columnname, value’这样形式的数据
mydata.m <- melt(mydata) #将现有的value值划分等级
quantile_range <- quantile(mydata.m$value, na.rm = TRUE, probs = seq(0, 1, 0.2)) #颜色模板
color_palette <- colorRampPalette(c("green", "red"))(length(quantile_range) - 1) #图例标签
label_text <- rollapply(round(quantile_range, 2), width = 2, by = 1, FUN = function(i) paste(i, collapse = " : ")) #将value值用1,2,3,4...等级代替(用以着色)
mod_mat <- matrix(findInterval(mydata.m$value, quantile_range, all.inside = TRUE)) ##设置图形样式
theme_change <- theme(
#设置xy轴字体样式、大小等 colour="grey50",
axis.text.x=element_text(family = "Arial",size=12, colour="black",angle = 0),
axis.text.y=element_text(family = "Arial",size=12, colour="black",face="italic"),
axis.title.x=element_text(family = "Arial",angle=0, face="plain", size=14),#font face ("plain", "italic", "bold", "bold.italic")
axis.title.y=element_text(family = "Arial",angle=270, face="plain", size=14),
axis.line = element_blank(),
axis.ticks = element_blank(),
#设置图例字体样式大小
#legend.text
#legend.title
#legend.position #the position of legends ("none", "left", "right", "bottom", "top", or two-element numeric vector)
#清空背景及xy轴样式
plot.background = element_blank(),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
panel.background = element_blank(),
panel.border = element_blank()
) ## 输出图形 #Arial
p <- ggplot(data = mydata.m, aes(mydata.m$variable, mydata.m$Name, fill=factor(melt(mod_mat)$value))) +
geom_tile()+
#geom_tile(color="white", size=0.1) + #color="white", size=0.1设置栅格之间的分割线颜色及大小
theme_classic() + #去掉灰快
theme_change +
scale_x_discrete(limits=c("BS","X", "BS1","RS"),labels=c("BS","","BS","RS"))+#x轴排序及标注
scale_y_discrete(limits=c("B","C","NA1","Meth1", "Meth2","Meth3","Meth4","NA2","S","G","M"),labels=c("B","C","","Meth1", "Meth2","Meth3","Meth4","","S","G","M"))+ #y轴排序及标注
xlab('row name1') +
ylab('column name') + #更改行名和列名
scale_fill_manual(values = color_palette, name = "Level", labels = label_text) +
#scale_fill_gradient(na.value='#FFFFFF',low = 'green', high = 'red')+ #修改图例名字以及图中颜色
#scale_fill_gradient2('legend name', na.value='#FFFFFF',low = '#8856a7', high = '#636363', mid = '#ece7f2')+ #修改图例名字以及图中颜色
geom_text(aes(label=round(value,2)), family="Arial", angle=0, colour = "black",size=5)#显示每个栅格的数值及字体设置
p #legend的设置参见http://www.cookbook-r.com/Graphs/Legends_(ggplot2)/

输出效果图:

--------------------------------我是分割线------------------------------------

转载请注明出处!

R实战之热点图(HeatMap)的更多相关文章

  1. javascript的 热点图怎么写

    在gis中,你如果用js来写热点图 不借助后台怎么搞,as的话比较容易有相应的类库甚至官方都有.而且用js不借助arcgis发布rest服务,(注:热点图可以借助服务的形式发布,arcgis for ...

  2. 《R实战》读书笔记一

    你仅仅要想处理数据,<R实战>这本书就能够助你一臂之力. <R实战>的目标是让你认识R,而且可以对数据进行操作.可视化和理解.该书包含4部分16个章节8个附录. 第一部分:入门 ...

  3. 用Excel制作热图(heatmap)的方法

    http://jingyan.baidu.com/article/64d05a0240ec75de55f73bd8.html 利用Excel 2010及以上版本的"条件格式"--& ...

  4. R实战 第三篇:数据处理(基础)

    数据结构用于存储数据,不同的数据结构对应不同的操作方法,对应不同的分析目的,应选择合适的数据结构.在处理数据时,为了便于检查数据对象,可以通过函数attributes(x)来查看数据对象的属性,str ...

  5. K8S(14)监控实战-grafana出图_alert告警

    k8s监控实战-grafana出图_alert告警 目录 k8s监控实战-grafana出图_alert告警 1 使用炫酷的grafana出图 1.1 部署grafana 1.1.1 准备镜像 1.1 ...

  6. R语言学习 - 热图绘制heatmap

    生成测试数据 绘图首先需要数据.通过生成一堆的向量,转换为矩阵,得到想要的数据. data <- c(1:6, 6:1, 6:1, 1:6, (6:1)/10, (1:6)/10, (1:6)/ ...

  7. R语言学习 - 热图简化

    绘制热图除了使用ggplot2,还可以有其它的包或函数,比如pheatmap::pheatmap (pheatmap包中的pheatmap函数).gplots::heatmap.2等.   相比于gg ...

  8. 基于HTML5实现3D热图Heatmap应用

    Heatmap热图通过众多数据点信息,汇聚成直观可视化颜色效果,热图已广泛被应用于气象预报.医疗成像.机房温度监控等行业,甚至应用于竞技体育领域的数据分析. http://www.hightopo.c ...

  9. R实战读书笔记四

    第三章 图形入门 本章概要 1 创建和保存图形 2 定义符号.线.颜色和坐标轴 3 文本标注 4 掌控图形维数 5 多幅图合在一起 本章所介绍内容概括例如以下. 一图胜千字,人们从视觉层更易获取和理解 ...

随机推荐

  1. 需要注意学习.net过程的要点

    基础部分 C# 基础语法 OOP的概念,面向对象的理解 继承 封装 多态 ASP.NET MVC (Web Form 用的越来越少,如果你不熟悉,可以不看) JavaScript 基础语法 如何在HT ...

  2. 20145337实验五Java网络编程及安全

    20145337实验五Java网络编程及安全 实验内容 掌握Socket程序的编写 掌握密码技术的使用 设计安全传输系统 实验步骤 基于Java Socket实现安全传输 基于TCP实现客户端和服务器 ...

  3. repeater单双行颜色不同,gridview repeater DataList 鼠标经过改变背景颜色

    1.gridview 双击GridView的OnRowDataBound事件: 在后台的GridView1_RowDataBound()方法添加代码,最后代码如下所示: protected void  ...

  4. MySQL 启动时禁用了 InnoDB 引擎的解决方法

    今天在从本地数据库复制表数据到虚拟机 CentOS 6.6 上的数据库时,得到提示: Unknown table engine 'InnoDB' 于是在服务器 MySQL 中查看了引擎: mysql& ...

  5. SevenZip.pas BUG修改版 - 20160613

    原始版本: Henri Gourvest <hgourvest@gmail.com> 1.2版本 BUG修改: 1.对于文件名中带有空格的文件, 无法压缩, 原因是1488行, 压缩调用的 ...

  6. Intelligencia.UrlRewriter在IIS 7.0下的完全配置攻略

    在项目中,之前公司是使用IIS 7.0官方的URL重写模块,官方的使用说明请参见官方URLRewrite  ,添加伪静态支持,后来经理问我有没有涉及伪静态,我说之前项目中我一直是用Intelligen ...

  7. RDIFramework.NET V2.8版本 ━ 开发实例之产品管理(WinForm)

    RDIFramework.NET V2.8版本 ━ 开发实例之产品管理(WinForm) 现在,我们使用.NET快速开发整合框架(RDIFramework.NET)来开发一个应用,此应用皆在说明如何使 ...

  8. 第一次尝试编写java

    昨晚手贱,不小心把环境变量path里面都东西全删除了 然后上百度搜了一波又一波 最后还是复制达达的 感动 然后还是不行,最后发现错误竟然是分号用了汉字的分号而不是英文的分号 这个问题在编写C语言也出现 ...

  9. zjuoj 3604 Tunnel Network

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3604 Tunnel Network Time Limit: 2 Secon ...

  10. Pyhton 学习总结 21 :fileinput模块

    fileinput模块可以对一个或多个文件中的内容进行迭代.遍历等操作.该模块的input()函数有点类似文件readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次性 ...