在我的真实数据中,我有一个PCA绘图,我想以50种不同方式对所有分数的分数进行着色,以50种不同的方式进行着色。不同标记之间的得分相差很大,因此我希望每个绘图在连续色标中都有自己的最大值和最小值。
例如,如果使用彩虹色渐变,则此方法有效,但是由于我要查找“高”和“低”,因此我想要一个蓝灰色-红色刻度。当我使用scale_color_gradient2
进行此设置时,最大值和最小值是根据所有数据而不是每个Hallmark设置的。请参见下面的示例代码:
set.seed(1)
df <- data.frame(matrix(rnorm(20), nrow=4)) %>%
cbind(.,data.frame(matrix(rnorm(20)*5, nrow=4)) ) %>%
add_column(HALLMARK= c("HALLMARK1","HALLMARK2","HALLMARK3","HALLMARK4"), .before = 1) %>%
gather(key=Patient, value= Value , -HALLMARK) %>%
cbind(., data.frame(Value2=matrix(rnorm(20), nrow=20)))
这可行,但是颜色错误:
test.plots <- df %>%
group_by(HALLMARK) %>%
do(
plots= ggplot(data=., mapping=aes(x=Value, y=Value2))+
geom_point(.,mapping=aes(color=Value))+
geom_text(.,mapping=aes(label=Patient, color=Value))+
scale_colour_gradientn(colors = rainbow(3))+
theme_bw()+
theme(panel.grid = element_blank())+
facet_wrap(~HALLMARK)
)
test.plots$plots
这不符合我的要求,但是颜色正确:
test.plots <- df %>%
group_by(HALLMARK) %>%
do(
plots= ggplot(data=., mapping=aes(x=Value, y=Value2))+
geom_point(.,mapping=aes(color=Value))+
geom_text(.,mapping=aes(label=Patient, color=Value))+
scale_color_gradient2(midpoint=median(.$Value), mid="grey", low= "red", high="blue" )+
theme_bw()+
theme(panel.grid = element_blank())+
facet_wrap(~HALLMARK)
)
test.plots$plots
有人可以帮助我吗? 在此先感谢:)
答案 0 :(得分:0)
@Jimbou提供的功能解决方案:
test.plots <- df %>%
group_by(HALLMARK) %>%
do(
plots= ggplot(data=., mapping=aes(x=Value, y=Value2))+
geom_point(.,mapping=aes(color=Value))+
geom_text(.,mapping=aes(label=Patient, color=Value))+
scale_colour_gradientn(colors = c("grey","red","blue" ))+
theme_bw()+
theme(panel.grid = element_blank())+
facet_wrap(~HALLMARK)
)
test.plots$plots