ggplot2瓷砖比例限制

时间:2014-03-10 07:14:12

标签: r ggplot2

如果这是一个明显的问题,请道歉,但有人能告诉我如何在使用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”在两者中具有相同的颜色热图。

感谢您的帮助

1 个答案:

答案 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)

enter image description here

# 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)

enter image description here

相关问题