我正在使用R和格子中的函数levelplot()
制作热图。
我使用的命令是:
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。
答案 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
选项vmax
和vmin
。
这是一个最小的工作示例:
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()
答案 2 :(得分:0)
除了卡尔的回答:
您可以设置col.regions
的默认值,例如
`trellis.par.set (regions = list (col = rainbow))
色标范围:请参阅levelplot
的参数at
。
行名和列名:请参阅? xyplot
,参数scales
。