R 双色有序热图
在这个例子中 我已经将数据输入改为第二列,第二列的每个值都是0,所以应该用白色填充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
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