R 使用双比例颜色渐变ggplot2

R 使用双比例颜色渐变ggplot2,r,ggplot2,R,Ggplot2,如果有的话,我想一定有一个非常简单的解决办法。我有两个大数据帧,基本上如下所示: > data1[1,] chromosome start end test ref position log2 p.value 13600 Y 10199251 10200750 533 616 10200000 0.2181711 0.00175895 ... > data2[1,] chromosome start

如果有的话,我想一定有一个非常简单的解决办法。我有两个大数据帧,基本上如下所示:

> data1[1,]
      chromosome start    end      test ref position log2      p.value 
13600 Y          10199251 10200750 533  616 10200000 0.2181711 0.00175895   
...

> data2[1,]
      chromosome start    end      test ref position log2       p.value 
4080  Y          10197501 10202500 403  367 10200000 0.04113596 0.3149926   
...
我使用这段代码将两个数据帧绘制到同一个图形中:

p <- ggplot() + geom_point(data=subset(data1, p.value >= glim[1]),
map=aes(x=position, y=log2, colour=p.value))
+ geom_point(data=subset(data2, p.value >= glim[1]), map=aes(x=position,
y=log2, colour=p.value))
p=glim[1]),
地图=aes(x=位置,y=对数2,颜色=p.值))
+几何点(数据=子集(数据2,p.value>=glim[1]),地图=aes(x=位置,
y=对数2,颜色=p.值)
当我绘制单个数据帧时,我对“p.value”列中的值使用了红白颜色渐变。使用此行:

p <- p + scale_colour_gradient(limits=glim, trans='log10', low="red", 
high="white") 

p首先,请注意ggplot不鼓励这样做的原因是因为这些图往往难以解释

你可以借助一点技巧获得两个颜色渐变比例。在geom_point中,某些形状(21到25)可以同时具有填充和颜色。您可以利用它创建一个具有“填充”比例的图层和另一个具有“颜色”比例的图层

#虚拟数据

dat1我知道这是一个很长的时间后,但看看


您可以使用函数
new\u color\u scale()
来启动一个新的颜色比例,该比例适用于其后的所有内容。

Aha,我遇到了相同的问题,只是我没有将比例\u color\u渐变应用于两组点,而是应用于一组点,我希望为叠加的几何图形路径应用另一个比例\u color\u渐变。。。。。两者都有不同的分布,但我仍然希望在同一个图表中看到它们。有什么提示吗?我应该补充一点,我的渐变是使用scale_color定制的_gradientn@ThomasBrowne如果你可以用一个小的可重复的例子作为一个新问题来提问,这里有很多ggplot专家用户会跳进来回答。对不起打扰了,拉姆!你介意帮我回答这个问题吗?在我真正的代码库中集成这种方法时,我还有另一个问题。我可以请你帮忙吗?我什么时候会把它作为一个问题记录下来?非常感谢。更通用的方法是在调用ggplot2之前将数据重新缩放到通用比例。请参见此处的
shp
?在
shape=shp
中,使用
scale\u color\u identity()
为每个点定义自己的颜色。
p <- p + scale_colour_gradient(limits=glim, trans='log10', low="red", 
high="white") 

p <- p + scale_colour_gradient(limits=glim, trans='log10', low="blue", 
high="white") 
# dummy up data
dat1<-data.frame(log2=rnorm(50), p.value= runif(50))
dat2<-data.frame(log2=rnorm(50), p.value= runif(50))

# geom_point with two scales
p <- ggplot() +
       geom_point(data=dat1, aes(x=p.value, y=log2, color=p.value), shape=21, size=3) +
       scale_color_gradient(low="red", high="gray50") +
       geom_point(data= dat2, aes(x=p.value, y=log2, shape=shp, fill=p.value), shape=21, size=2) +
       scale_fill_gradient(low="gray90", high="blue")
p