【问题标题】:using two scale colour gradients on one ggplot [duplicate]在一个 ggplot 上使用两个比例颜色渐变
【发布时间】:2012-07-29 23:07:04
【问题描述】:

我想将散点图上的点的色阶渐变与绘图上某些文本的色阶渐变结合起来。我可以按照下面的示例分别执行它们,但我似乎无法将它们放在一起...有没有办法做到这一点?

这是我想要组合的两种类型的图(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

【问题讨论】:

  • 仅供参考 有些人会觉得你在 ggplot2 邮件列表上交叉发布这个有点烦人。在多个地方寻求帮助是可以的,但请先尝试在一个地方询问,如果在合理的时间后没有得到答案,请仅转移到另一个论坛。

标签: r colors ggplot2 scale gradient


【解决方案1】:

我不希望这可以做到。每个美学只有一个情节。我相信如果你添加多个scale_color,第二个会覆盖第一个。我认为 Hadley 故意创建了这种行为,在绘图中从数据映射到绘图中的比例,例如颜色,是独一无二的。这确保了绘图中的所有颜色都可以轻松比较,因为它们共享相同的scale_color

【讨论】:

  • 嗯,很有趣,感谢您的评论,但如果色阶完全不同,那么每个色阶肯定可以代表不同的东西,特别是如果一个与文本的颜色有关......,而另一个与点的颜色有关
  • @hlm 如您所知,Hadley 的“官方”立场似乎是他并非 100% 反对多尺度的 idea,而是以一种对于使用次数有限的功能而言,与其他一切无缝协作将非常复杂。
  • 为什么不使用 scale_alpha 来获得黑色阴影,即灰色。
猜你喜欢
  • 1970-01-01
  • 2023-02-22
  • 2022-12-20
  • 2020-02-10
  • 1970-01-01
  • 2012-07-04
  • 1970-01-01
  • 2022-08-10
  • 1970-01-01
相关资源
最近更新 更多