如果这是一个明显的问题,请道歉,但有人能告诉我如何在使用geom tile绘制的热图上设置比例吗?我想在相同的比例上绘制几个热图(例如,使用缩放到最多10的颜色绘制,即使其中两个最大值为5)也无法解决。
一个例子:
mydata<-expand.grid(X1=1:8,Y1=1:5)
Z1<-floor(runif(40,min=0,max=6))
Z2<-floor(runif(40,min=0,max=11))
mydata<-cbind(mydata,Z1,Z2)
mydata<-data.frame(mydata)
p1 <- ggplot(mydata, aes(x=X1, y=Y1, z = Z1))
p1 <- p +geom_tile(aes(fill = Z1))
p2 <- ggplot(mydata, aes(x=X1, y=Y1, z = Z2))
p2 <- p +geom_tile(aes(fill = Z2))
p1将在0到4之间缩放,而p2将在0到10之间缩放。我想绘制它们以使颜色在相同的比例上 - 所以“4”在两者中具有相同的颜色热图。
感谢您的帮助
答案 0 :(得分:1)
colors<-c("red","orangered","orange","yellow","lightyellow",
"lightgreen","green","darkgreen","darkblue","purple")
df<-expand.grid(x=1:5,y=1:5,grp=1:4) # fill in 4 grids
df$vals<-runif(100)*10 # add some values between 0 & 10
ggplot(df) + geom_tile(aes(x,y,fill=vals)) +
facet_wrap(~ grp) +
scale_fill_gradientn(colours=colors,values=1:10,rescaler = function(x,...) x, oob = identity)
# and filtering out high numbers for some groups
ggplot(df[df$vals<=5|df$grp<3,]) + geom_tile(aes(x,y,fill=vals)) +
facet_wrap(~ grp) +
scale_fill_gradientn(colours=colors,values=1:10,rescaler = function(x,...) x, oob = identity)