2

我有一个只有零和一个的矩阵:

                  acc062_1 acc062_2 acc003_1 acc003_2 acc039_1 acc039_2
SL2.40ct15849        0        1        0        0        1        0
SL2.40ct15848        0        0        0        0        0        0
SL2.40ct15847        0        0        0        0        0        0
SL2.40ct15846        0        0        0        0        0        0
SL2.40ct15845        0        0        0        0        0        0
SL2.40ct15844        1        1        1        1        1        1
SL2.40ct11061        0        0        0        0        0        0
SL2.40ct11060        0        0        0        0        0        0
SL2.40sc04607        1        1        1        1        1        1
SL2.40ct11212        0        0        0        0        0        0
SL2.40ch12           1        1        1        1        1        1

使用此矩阵,我可以使用图形包的图像功能创建图像。使用此代码:

image(x)

这给了我一个完全符合预期的图像,红色代表 0,白色代表 1。但是 x 轴和 y 轴上的标签不是行名和列名。这是一个介于 0 和 1 之间的范围,如何将这些更改为我的列名?

使用热图功能时:

heatmap(x)

标签是 x 轴和 y 轴的列名和行名。但是现在所有只有零或只有一个的行都是空白的。仅按预期绘制具有变化的读数。(也完成了集群,但我可以关闭此功能)

有谁知道如何获取使用 image(x) 创建的图像并获取使用 heatmap(x) 创建的标签?更喜欢使用图像功能,因为行数会非常高。

4

1 回答 1

8

我认为您应该在没有轴(参数 xaxt 和 yaxt)的情况下运行 image(),然后添加具有指定标签的轴:

par( mar = par( "mar" ) + c( 2, 4, 0, 0 ) )
image( x, xaxt= "n", yaxt= "n" )
axis( 1, at=seq(0,1,length.out=ncol( x ) ), labels= colnames( x ), las= 2 )
axis( 2, at=seq(0,1,length.out=nrow( x ) ), labels= rownames( x ), las= 2)
于 2013-07-10T11:21:19.267 回答