1

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

我正在使用的命令是:

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

我得到这样的数字

一

三件事:

(a) 行标签被弄脏,如何解决这个问题以获得更清晰的行标签?

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

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

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

4

3 回答 3

1

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

imshow(a) 带有选项的绘图interpolation="nearest"

(b) 例如,可以在imshow选项cmap=cm.jet中选择颜色图。更多例子在这里

(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()

在此处输入图像描述

于 2012-05-23T14:09:13.540 回答
1

从帮助页面levelplot


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

于 2012-05-23T11:17:55.013 回答
0

除了卡尔的回答:

  • col.regions您可以通过例如设置默认值

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

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

于 2012-05-23T13:25:29.840 回答