如何用R语言画heatmap图

Python013

如何用R语言画heatmap图,第1张

heatmap函数可以用来画heatmap图,例:

require(graphics)require(grDevices)

x <- as.matrix(mtcars)

rc <- rainbow(nrow(x), start = 0, end = .3)

cc <- rainbow(ncol(x), start = 0, end = .3)

hv <- heatmap(x, col = cm.colors(256), scale = "column",

RowSideColors = rc, ColSideColors = cc, margins = c(5,10),

xlab = "specification variables", ylab = "Car Models",

main = "heatmap(<Mtcars data>, ..., scale = \"column\")")

utils::str(hv) # the two re-ordering index vectors

一、R预设调色板

这一系列函数有5个,即:

rainbow

heat.colors

terrain.colors

topo.colors

cm.colors

在R环境里面输入问号(?)和上面任一函数名就可以获得这5个函数的用法说明。这些函数最少需要一个参数,n,表示要得到颜色的数量。n在系统允许范围内没有限制。下面用彩虹色调色板函数rainbow产生的颜色绘一个色盘:

>setwd("D:/")n=1000

>png("rainbow.disc.png", bg = "transparent")

>par(mar = c(0,0,0,0))

>pie(rep(1,times=n),labels="",col=rainbow(n),border=rainbow(n))

>dev.off()运行后回在D盘根目录下得到一个rainbow.disc.png文件,图形如下:

五个调色板产生的颜色对比如下:

>par(mfrow=c(5,1))par(mar=c(0.1,0.1,2,0.1))par(xaxs="i", yaxs="i")

>n <- 10000

>barplot(rep(1,times=n),col=rainbow(n),border=rainbow(n),axes=FALSE, main="Rainbow colors")box()

>barplot(rep(1,times=n),col=heat.colors(n),border=heat.colors(n),axes=FALSE, main="heat.colors")box()

>barplot(rep(1,times=n),col=terrain.colors(n),border=terrain.colors(n),axes=FALSE,main="terrain.colors")box()

>barplot(rep(1,times=n),col=topo.colors(n),border=topo.colors(n),axes=FALSE, main="topo.colors")box()

>barplot(rep(1,times=n),col=cm.colors(n),border=cm.colors(n),axes=FALSE, main="cm.colors")box()

当然你可能不需要这么多颜色,改变n值就可以了:

>n <- 10

>barplot(rep(1,times=n),col=rainbow(n),border=rainbow(n),axes=FALSE, main="Rainbow colors")box()

>barplot(rep(1,times=n),col=heat.colors(n),border=heat.colors(n),axes=FALSE, main="heat.colors")box()

>barplot(rep(1,times=n),col=terrain.colors(n),border=terrain.colors(n),axes=FALSE,main="terrain.c

调色板有3种类型:连续型调色板、离散型调色板和定性调色板。

绘图应用[1]

Wes Anderson,电影导演韦斯·安德森,善于运用色彩。

最欣赏的一点是他以色调和对称构图来讲述惟妙惟肖的故事情节,而不是使用过多复杂花哨的拍摄方式诠释自己的才能。 [1]

绘图应用[2]

可以使用函数rainbow(n), heat.colors(n), terrain.colors(n), topo.colors(n)和cm.colors(n)生成n个连续颜色的向量

绘图应用[3]

绘图应用[4]

参考资料: