Цветовой интервал диаграммы рассеяния GGplot

#r #ggplot2

Вопрос:

В настоящее время я возвращаюсь к использованию R, но прошло уже некоторое время, так что я немного заржавел.

У меня есть следующий код для создания графиков с использованием ggplot2:

 ggplot(NewData, aes(x=PAH16Cons ,y=Depth, group(FileName))) 
                geom_point(aes(colour=PAH16Cons)) 
                scale_y_continuous(trans="reverse") 
                facet_wrap(facets = vars(FileName)) 
                scale_color_gradient2("Cons mg/kg ts", 
                                      breaks =c(0,100,500),
                                      low = 'green',
                                      mid = 'yellow',
                                      high = 'red')
 

Я пытаюсь изменить цвет графика, чтобы значения между 0-100 были зелеными, 100-500 желтыми и более 500 красными. введите описание изображения здесь

Но, как вы можете видеть, я не получаю зеленого, любая помощь была бы очень признательна

Комментарии:

1. Вы должны установить midpoint значение, которое по умолчанию равно 0 . Вот почему ваш градиент начинается с желтого.

2. О, я понимаю.. Итак, если я хочу, чтобы все значения ниже 100 были одного оттенка зеленого, все значения от 100 до 500-одного оттенка желтого и все выше 500-одного оттенка красного, это не так?

3. Чтобы уточнить, вы хотите использовать цветовые градиенты или отдельные цветовые оттенки? Если вы хотите использовать отдельные цвета для представления трех групп значений, то вам следует использовать scale_color_manual() вместо scale_color_gradient2() .

Ответ №1:

Если вы хотите использовать один цветовой оттенок для каждого диапазона значений, вы можете создать столбец группировки (коэффициента) с уровнями при условии PAH16Cons значений <100, 100-500 или >500. Затем используйте этот столбец для color эстетики в разделе ggplot и используйте scale_color_manual(values=c("green", "yellow", "red")) для настройки цвета.

 NewData$cols <- with(NewData, 
    factor(
        ifelse(PAH16Cons < 100, "<100", 
            ifelse(PAH16Cons >= 100 amp; PAH16Cons <= 500, "100-500", ">500")), 
        levels = c("<100", "100-500", ">500")))

ggplot(NewData, aes(x=PAH16Cons ,y=Depth, group(FileName))) 
    geom_point(aes(colour=cols)) 
    scale_y_continuous(trans="reverse") 
    facet_wrap(facets = vars(FileName)) 
    scale_color_manual("Cons mg/kg ts", values=c("green", "yellow", "red"))
 

Запустите ?scale_color_manual для получения дополнительной информации и примеров.