绘制多重图:连续色标的最大值和最小值不同

时间:2019-01-22 09:19:22

标签: r ggplot2 colors

在我的真实数据中,我有一个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

有人可以帮助我吗? 在此先感谢:)

1 个答案:

答案 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