Использование предопределенной цветовой палитры в ggplot - PullRequest
32 голосов
/ 20 июня 2010

Кто-нибудь знает, как использовать предопределенную цветовую палитру в ggplot?

У меня есть вектор цветов, который я хотел бы использовать:

rhg_cols <- c("#771C19", "#AA3929", "#E25033", "#F27314", "#F8A31B", 
              "#E2C59F", "#B6C5CC", "#8E9CA3", "#556670", "#000000")

Но когда я пытаюсьпередать, чтобы ничего не случилось

ggplot(mydata, aes(factor(phone_partner_products)), color = rhg_cols) +
  geom_bar()

Ответы [ 4 ]

31 голосов
/ 21 июня 2010

Вы должны поместить colour = rhg_cols внутрь aes().Насколько я могу сказать, вы хотите применить градиент для баров (в барплоте) с переменной фактора на абсциссе?Затем используйте fill - попробуйте это вместо:

ggplot(mydata, aes(factor(phone_partner_products), fill = factor(phone_partner_products))) +
  geom_bar() + 
  scale_fill_manual(values = rhg_cols)

или попробуйте получить приблизительную копию с помощью:

ggplot(mydata, aes(factor(phone_partner_products), fill = phone_partner_products))) +
  geom_bar() + 
  scale_fill_gradient(low = "#771C19", high = "#000000")

Обратите внимание, что во втором случае непрерывная переменная передается в fillэстетика, поэтому scale_fill_gradient передается впоследствии.Если вы передаете factor fill aes, вы должны придерживаться scale_fill_manual(values = rhg_cols).

23 голосов
/ 21 июня 2010

Если цвета являются палитрой, используйте scale_colour_manual:

ggplot(mydata, aes(factor(phone_partner_products), colour = colour_variable)) +
  scale_colour_manual(values = rhg_cols)
10 голосов
/ 20 июня 2010

Сначала добавьте, цвета для вашего набора данных:

mydata$col <- rhg_cols

Затем сопоставьте цвет с этим столбцом и используйте scale_colour_identity

ggplot(mydata, aes(factor(phone_partner_products, colour = col))) + 
  geom_bar() + 
  scale_colour_identity()
9 голосов
/ 15 июля 2011

Поскольку требуемые цвета являются значениями эстетики цвета, вам действительно нужна шкала identity, в данном случае scale_fill_identity.

 ggplot(mydata, aes(factor(phone_partner_products)), color=rhg_cols) +
   geom_bar() +
   scale_fill_identity())

Поскольку вы не предоставили данные, я собираюсь использовать немного другой пример с использованием ваших цветовых данных:

 rhg_cols <- c("#771C19","#AA3929","#E25033","#F27314","#F8A31B",
               "#E2C59F","#B6C5CC","#8E9CA3","#556670","#000000")
 mydata <- sample(rhg_cols, 100, replace = TRUE)
 qplot(mydata, fill = mydata) +
   scale_fill_identity()

enter image description here


примечание: для ясности в примере я опустил + opts(axis.text.x=theme_text(angle=90)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...