Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 双色有序热图_R_Heatmap - Fatal编程技术网

R 双色有序热图

R 双色有序热图,r,heatmap,R,Heatmap,在这个例子中 我已经将数据输入改为第二列,第二列的每个值都是0,所以应该用白色填充 people,1,2,3 Ej1,1,0,0 Ej2,0,0,1 Ej3,0,0,1 Ej4,1,0,0 使用与帖子中相同的代码 library(reshape2) library(ggplot2) library(scales) library(plyr) data <- read.csv("fruits.txt", head=TRUE, sep=",") data$people <- fa

在这个例子中

我已经将数据输入改为第二列,第二列的每个值都是0,所以应该用白色填充

people,1,2,3
Ej1,1,0,0
Ej2,0,0,1
Ej3,0,0,1
Ej4,1,0,0
使用与帖子中相同的代码

library(reshape2)
 library(ggplot2)
 library(scales)
library(plyr)
data <- read.csv("fruits.txt", head=TRUE, sep=",")
data$people <- factor(data$people,levels=rev(data$people))
 data.m = melt(data)
 data.m <- ddply(data.m, .(variable), transform, rescale = rescale(value))
  data.m <- ddply(data.m, .(variable), transform, rescale = rescale(value))
 p <- ggplot(data.m, aes(variable, people)) + geom_tile(aes(fill = rescale), 
                                                   colour =   "white") 
 p + scale_fill_gradient(low = "white", high = "steelblue")
library(重塑2)
图书馆(GG2)
图书馆(比例尺)
图书馆(plyr)

数据问题似乎是如何将
重新缩放
应用于数据帧。对于向量
x
rescale(x)
检查
x
的范围是否为
0
,如果是这种情况,它将使用
to
范围的
平均值,其默认值为
to=c(0,1)

ddply
.FUN
重新缩放
应用于数据帧时,当它考虑变量
X2
时,
值的范围
0
,如上例所示

data.m
中的
rescale
列显示了
X2
0.5
,如上所述。因此,
ggplot
正确地绘制了数据

   people variable value rescale
1     Ej1       X1     1     1.0
2     Ej2       X1     0     0.0
3     Ej3       X1     0     0.0
4     Ej4       X1     1     1.0
5     Ej1       X2     0     0.5
6     Ej2       X2     0     0.5
7     Ej3       X2     0     0.5
8     Ej4       X2     0     0.5
9     Ej1       X3     0     0.0
10    Ej2       X3     1     1.0
11    Ej3       X3     1     1.0
12    Ej4       X3     0     0.0
解决此问题的一种方法是在此处转储使用
ddply
,直接对数据帧进行操作,强制
重新缩放
对整个
列进行操作(而不是通过
(变量)
),从而避免
X2
的0范围问题

library(reshape2)
library(ggplot2)
library(scales)
library(plyr)
data <- read.csv("fruits.txt", head=TRUE, sep=",")
data$people <- factor(data$people,levels=rev(data$people))
data.m = melt(data)
#data.m <- ddply(data.m, .(variable), transform, rescale = rescale(value))
data.m[,"rescale"]<-rescale(data.m[,"value"],to=c(0,1))
p <- ggplot(data.m, aes(variable, people)) + geom_tile(aes(fill = rescale), colour =   "white")+ scale_fill_gradient(low = "white", high = "steelblue") 
p
library(重塑2)
图书馆(GG2)
图书馆(比例尺)
图书馆(plyr)

数据^没问题。请再来
library(reshape2)
library(ggplot2)
library(scales)
library(plyr)
data <- read.csv("fruits.txt", head=TRUE, sep=",")
data$people <- factor(data$people,levels=rev(data$people))
data.m = melt(data)
#data.m <- ddply(data.m, .(variable), transform, rescale = rescale(value))
data.m[,"rescale"]<-rescale(data.m[,"value"],to=c(0,1))
p <- ggplot(data.m, aes(variable, people)) + geom_tile(aes(fill = rescale), colour =   "white")+ scale_fill_gradient(low = "white", high = "steelblue") 
p