调整R中热图的颜色和比例

时间:2012-05-23 09:44:26

标签: python r heatmap levelplot

我正在使用R和格子中的函数levelplot()制作热图。

我使用的命令是:

data<-read.table("data_corr", header=T) 
library(gplots)
library(lattice)
z<-cor(data)
levelplot(z)

我得到一个这样的数字

one

三件事:

(a)行标签是污迹,如何解决这个问题以获得更清晰的行标签?

(b)我如何使用红色,绿色和蓝色代替默认颜色(粉色,白色和蓝色)?

(c)是否可以将比例从0.90调整为1而不是0.84?

python中的解决方案也受到欢迎,在这种情况下,我有一个90 * 90(行*列)的相关文件,比如文件名是z.txt。

3 个答案:

答案 0 :(得分:1)

来自levelplot的帮助页面:

col.regions
如果区域为TRUE,则使用颜色向量。一般的想法是,这应该是一个中等长度的颜色向量(长于区域的数量。默认情况下,这是100)。预计该矢量的颜色会逐渐变化(因此附近的颜色会相似)。当实际选择颜色时,选择它们沿着该矢量等间隔。当col.regions中的区域多于颜色时,颜色会被回收。实际的颜色分配由level.colors执行,单独记录。

答案 1 :(得分:1)

在python的matplotlib中,您的问题的答案是:

(a)使用imshow选项interpolation="nearest"

进行绘图

(b)可以在imshow选项cmap=cm.jet中选择色彩映射。 More examples here

(c)为了缩放,我假设您只想在阈值中显示值并相应地设置颜色条图。使用imshow选项vmaxvmin

这是一个最小的工作示例:

import numpy as np
import pylab as plt

# Create random matrix, save it to a text file
N = 90
A = np.random.random((N,N))
np.fill_diagonal(A,.95)
np.savetxt("z.txt",A)

# Load the data
A = np.loadtxt("z.txt")

# Apply a mask so values below .9 don't show
A[A<.9] = None

# Scale the values from .9 to 1.0 using vmin,vmax
plt.imshow(A, interpolation='nearest', vmin=.9,vmax=1.0,cmap=plt.cm.jet)
plt.colorbar()
plt.show()

enter image description here

答案 2 :(得分:0)

除了卡尔的回答:

  • 您可以设置col.regions的默认值,例如

    `trellis.par.set (regions = list (col = rainbow))
    
  • 色标范围:请参阅levelplot的参数at

  • 行名和列名:请参阅? xyplot,参数scales