我正在尝试使用以下数据中的log2值绘制点的散点图:
chromosome start end test ref position log2 p.value cnv cnv.size cnv.log2 cnv.p.value
1 X 1 10000 50 74 5000 -0.29260198 2.857792e-06 0 NA NA NA
2 X 5001 15000 50 72 10000 -0.25307362 4.125984e-05 0 NA NA NA
10 X 45001 55000 992 1043 50000 0.20066806 7.482412e-04 0 NA NA NA
11 X 50001 60000 1287 1417 55000 0.13416749 1.687005e-02 0 NA NA NA
12 X 55001 65000 892 1149 60000 -0.09226799 7.342756e-02 0 NA NA NA
13 X 60001 70000 651 838 65000 -0.09129751 7.556642e-02 0 NA NA NA
我正在尝试使用log2值进行着色,其中:
我试图通过分别绘制pos和neg值来实现这一点:
pos<-subset(clean_file, clean_file$log2 > 0)
neg<-subset(clean_file, clean_file$log2 < 0)
p <- ggplot()
p <- p + geom_point(data=pos, aes(x = start, y = log2, alpha = log2, colour = log2))
p <- p + scale_colour_gradient2(low=muted("blue"), high=muted("green"), limits=c(0, 0.75), na.value="black" )
p <- p + geom_point(data=neg, aes(x = start, y = log2, alpha = -log2, colour = -log2))
p <- p + scale_colour_gradient2(low=muted("purple"), high=muted("red"), limits=c(0, -0.75), na.value="darkred" )
p <- p + ylim(-5,5)
p <- p + facet_wrap(~chromosome, scale="free_x")
但结果不对(我得到以下错误):
'color'的比例已经存在。添加另一个比例 'color',它将取代现有的规模。
答案 0 :(得分:1)
根据SELECT *
FROM some_table t
WHERE NOT EXISTS (
SELECT 1
FROM some_table x
WHERE LEAST( x.start_date, x.end_date ) < GREATEST( t.start_date, t.end_date )
AND GREATEST( x.start_date, x.end_date ) > LEAST( t.start_date, t.end_date )
)
的帮助文件:
&#34;如果颜色不能沿着渐变均匀定位,则此向量给出颜色向量中每种颜色的位置(在0和1之间)。请参阅rescale以获得一个convience函数,以将任意范围映射到0到1之间。&#34;
所以你需要做一些调整。一种方法是创建一个额外的变量,重新缩放log2:
scale_colour_gradientn()
然后记下要为其着色的log2值的等效log2_scale值。然后使用您选择的log2_scale值替换values参数中的向量(这些值应介于0和1之间)。
最后,您需要将映射添加到您的ggplot美学中:
clean_file$log2_scale <- scales::rescale(clean_file$log2)
要自动计算值向量,可以创建一个使用clean_file data.frame的自定义函数,并将原始log2值映射到缩放值。
答案 1 :(得分:1)
这基本上实现了我想要的目标:
library(RColorBrewer)
cols <- brewer.pal(n = 5, name = "RdBu")
p <- ggplot()
p <- p + geom_point(data=clean_file, aes(x = start, y = log2, colour = log2), size = 1)
p <- p + ylim(-5,5)
p <- p + scale_colour_gradientn(colours = cols,
values = rescale(c(-2, -0.25, 0, 0.25, 2)),
guide = "colorbar", limits=c(-5, 5))
p <- p + facet_wrap(~chromosome, scale="free_x")