Построение графиков с несколькими участками: разные максимальные и минимальные значения для непрерывной цветовой шкалы - PullRequest
0 голосов
/ 22 января 2019

В моих реальных данных у меня есть график PCA, который я хочу раскрасить 50 различными способами, основываясь на оценке всех моих баллов по 50 различным признакам.Баллы сильно различаются между различными признаками, поэтому я хочу, чтобы у каждого графика были свои максимальные и минимальные значения для непрерывной цветовой шкалы.

Это работает, если я использую, например, градиент цвета радуги, но так как я хочу искать «высокий» и «низкий», я хочу иметь сине-серо-красную шкалу.Когда я делаю это с помощью scale_color_gradient2, значения max и min устанавливаются на основе всех данных, а не на 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 голосов
/ 22 января 2019

Функциональное решение, данное @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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...