В моих реальных данных у меня есть график 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
Может кто-нибудь мне помочь?Заранее спасибо:)