我有以下数据框样本:
A B C pval
1 8 4 0.6714801 0.3138729
2 9 9 0.6373763 0.1402027
3 5 6 0.6695279 0.3426810
4 10 7 0.6338043 0.1722161
5 2 3 0.6692842 0.3301052
6 1 1 0.6728664 0.5777641
7 6 2 0.6608868 0.2637952
8 3 10 0.6721009 0.6584530
9 7 8 0.6338043 0.7839811
10 4 5 0.6728818 0.5045481
但是发生了一些奇怪的事情。
当我对pval
列进行剪切时,我得到了很多级别
dataf$pval.d <- cut(dataf$pval, breaks=c(min(dataf$pval),0.02,0.05,Inf),
labels=c("min","0.02","0.05"), right = FALSE)
> paste(levels(dataf$pval.d),table(dataf$pval.d))
[1] "min 0" "0.02 36" "0.05 3342"
但是当我想使用scale_colour_gradient
进行绘制时,我在图例中获得的休息次数较少(only one for 0.05
)。即使它位于同一数据框的同一列上。
pl <-ggplot(dataf) +
geom_tile(aes(fill=C,A,B)) +
stat_contour(breaks = c(min(dataf$pval),0.02,0.05),
aes(x=A,y=B,z=pval,colour = ..level..)) +
scale_colour_gradient2(low="black",mid="black",high="green",
name="\n P-value \n")
我如何让scale_colour_gradient2
以与切割相同的方式进行休息?我想我只需要控制scale_colour_gradient2
内的休息间隔,如果可能的话?