8

散布図の点のカラー スケール グラデーションと、プロットに表示されるテキストのカラー スケール グラデーションを組み合わせたいと思います。以下の例に示すように、それらを個別に行うことはできますが、それらをまとめることができないようです...これを行う方法はありますか?

結合したい 2 種類のプロット (p と p1) のコード例を次に示します。

l <- data.frame(prev=rnorm(1266), 
            aft=rnorm(1266), 
            day=as.factor(wday(sample(c(2:6),1266,replace=TRUE),abbr=TRUE, label=TRUE)), 
            month=as.factor(month(Sys.Date()+months(sample(0:11,1266,replace=TRUE)),abbr=TRUE, label=TRUE)), 
            ind=c(1:1266))
cors <- ddply(l, c("month", "day"), summarise, cor = round(cor(prev, aft), 3))


# below the text gains the colour gradient
p <- ggplot(l, aes(x=prev, y=aft)) + 
    geom_point() + 
    scale_colour_gradient(low = "red", high="blue")+ 
    facet_grid(day~month, scales="free_x")+
    geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, y=Inf, vjust=1, hjust=1, show_guide=FALSE)+
    geom_hline(aes(yintercept=0))+
    geom_smooth(method="loess")
p

# below the points gain the colour gradient
p1 <- ggplot(l, aes(x=prev, y=aft)) + 
    geom_point(aes(colour=ind)) + 
    scale_colour_gradient("gray")+ 
    facet_grid(day~month, scales="free_x")+
    geom_text(data=cors,aes(label=paste("r= ",cor,sep=""), size=abs(cor), colour=cor), x=Inf, y=Inf, vjust=1, hjust=1, show_guide=FALSE)+
    geom_hline(aes(yintercept=0))+
    opts(legend.position="none") +
    geom_smooth(method="loess")

p1
4

1 に答える 1

3

私はこれができるとは思っていません。プロットには、美的感覚ごとに1つのスケールしかありません。複数scale_colorのを追加すると、2番目が最初を上書きすると思います。Hadleyはこの動作を意図的に作成したと思います。プロット内では、データからプロット内のスケール(色など)へのマッピングは一意です。これにより、同じを共有するため、プロット内のすべての色を簡単に比較できますscale_color

于 2012-08-01T05:12:27.823 に答える