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

2024-06-28 14:48:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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(row*column)的相关文件,比如filename是z.txt。在


Tags: 函数命令readdatalibrarytable标签蓝色
3条回答

levelplot的帮助页:

在col.地区
“区域”为真时使用的颜色向量。这个向量的长度应该比一般的向量长。默认为100)。预计这个矢量在颜色上会逐渐变化(这样附近的颜色就会相似)。当实际选择颜色时,它们将被选择为沿该向量等距分布。当col.regions中的区域多于颜色时,颜色将被回收。实际的颜色分配由level.colors执行,这是单独记录的。在

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

(a)用imshow选项interpolation="nearest"绘图

(b)例如,可以在imshow选项cmap=cm.jet中选择颜色贴图。More examples here。在

(c)为了缩放,我假设您只想显示阈值中的值,并相应地拥有colorbar映射。使用imshow选项vmax和{}。在

下面是一个最小的工作示例:

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

除了卡尔的回答:

  • 您可以通过如下方式设置col.regions的默认值

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

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

相关问题 更多 >