Использование единой цветовой палитры для разных графиков ggplot2 с факторной переменной

Я использую ggplot2 для создания нескольких графиков с одинаковыми данными. В частности, меня интересует построение графиков наблюдений в соответствии с факторной переменной с 6 уровнями («кластер»).

Но графики, созданные ggplot2, каждый раз используют разные палитры!

Например, если я построю гистограмму по этой формуле, я получу следующий результат (я ожидаю получить именно эту палитру):

qplot(cluster, data = data, fill = cluster) + ggtitle("Clusters")

Гистограмма переменной кластера

И если я сделаю диаграмму рассеяния и попытаюсь раскрасить наблюдения в соответствии с их принадлежностью к кластеру, я получу следующий результат (обратите внимание, что цветовая палитра отличается):

ggplot(data, aes(liens_ratio,RT_ratio)) +
  geom_point(col=data$cluster, size=data$nombre_de_tweet/100+2) +
  geom_smooth() +
  ggtitle("Links - RTs")

Диаграмма рассеяния с наблюдениями, окрашенными в соответствии с их кластером

Есть идеи, как решить эту проблему?


person Dario Lacan    schedule 03.02.2015    source источник
comment
взгляни на ?scale_color_manual   -  person shadow    schedule 03.02.2015
comment
Кроме того, вы должны поместить аргументы цвета и размера в вызов aes.   -  person shadow    schedule 03.02.2015
comment
Если я попытаюсь установить цвета внутри aes в ggplot, мои линии glm также будут окрашены ... и цветовая палитра не изменится! То же самое для scale_color_manual, оно полностью переопределено   -  person Dario Lacan    schedule 03.02.2015
comment
а вы уверены что использовали geom_point(aes(color = cluster, size = nombre_de_tweet/100+2))?   -  person shadow    schedule 03.02.2015
comment
вы также можете попробовать создать воспроизводимый пример   -  person shadow    schedule 03.02.2015


Ответы (1)


Я не могу быть уверен, что это сработает в вашем конкретном случае без воспроизводимого примера, но я достаточно уверен, что все, что вам нужно сделать, это установить свой цвет внутри aes() вызова в геометрии, которую вы хотите раскрасить . То есть,

ggplot(data, aes(x = liens_ratio, y = RT_ratio)) +
  geom_point(aes(color = cluster, size = nombre_de_tweet/100+2)) +
  geom_smooth() +
  ggtitle("Links - RTs")

Если все графики, которые вы делаете, используют одни и те же данные и этот базовый формат, цветовая палитра должна быть одинаковой независимо от используемого геометрии. Дополнительные элементы, такие как строка из geom_smooth(), не будут изменены, если они также не будут явно окрашены.

Конечно, палитра будет стандартной; чтобы изменить его посмотрите в scale_color_manual.

person Joe    schedule 03.02.2015
comment
Спасибо, я изначально поместил предложение aes в глобальный вызов ggplot, а не в geom_point, теперь он отлично работает - person Dario Lacan; 06.02.2015