Как повторно использовать цвета в палитре Colorbrewer с помощью линейных символов

Я использую ggplot2, чтобы создать довольно много facet_wrapped geom_line сюжетов.

Хотя на каждом графике не более восьми строк, вместе взятых, в легенде можно отобразить около двадцати категорий.

В том же ключе: Порекомендуйте цвет шкалы для 13 или другие категории и это: Как в R изменить значение цвета только одного значения в scale_fill_brewer ggplot2? Я бы хотел искусственно увеличить количество цветов Я могу показать, используя высококонтрастные наборы цветов ColorBrewer.

Казалось бы, очевидный способ сделать это - «переработать» цвета в палитре с разными символами линии каждый раз. Ярко-красный с крестиками на линии может относиться к другой категории, нежели ярко-красный с нулями и т. Д.

Кто-нибудь может подумать, как я могу это сделать?

Спасибо!

Редактировать

Вот некоторые (очищенные) данные, с которыми можно поиграть, и код R, который я использую для создания своего графика.

Данные: http://orca.casa.ucl.ac.uk/~rob/Stack%20Overflow%20question/stack%20overflow%20colours%20question%20data.csv

Код R:

csvData <- read.csv("stack overflow colours question data.csv")
p <- ggplot(csvData, 
  aes(year, percentage_of_output, colour=category, group=category)) 
p + 
  geom_line(size=1.2)  + 
  labs(title = "Can I recycle the palette colours?", y = "% of output") +
  scale_colour_brewer(palette = "Set1") + 
  theme(plot.title = element_text(size = rel(1.5))) +
  facet_wrap("country_iso3", scales="free_y")

person LondonRob    schedule 27.02.2013    source источник
comment
Не могли бы вы более подробно объяснить атрибут, который вы собираетесь сопоставить со стилем цвет + линия?   -  person krlmlr    schedule 27.02.2013
comment
Было бы неплохо иметь некоторые данные для работы.   -  person Arun    schedule 27.02.2013
comment
Ага. Конечно! Подходит воспроизводимый пример ...   -  person LondonRob    schedule 27.02.2013


Ответы (1)


Сделал фрейм данных, содержащий 20 уровней (в виде букв).

df<-data.frame(group=rep(c(LETTERS[1:20]),each=5),x=rep(1:5,times=20),y=1:100)

Вы можете использовать scale_colour_manual(), чтобы установить цвета для линий - в примере я использовал пять SET1 и повторил их четыре times (всего 20). Затем, чтобы задать формы, добавили geom_point() и scale_shape_manual() и пять различных форм и повторили их each четыре раза (общее количество снова 20).

library(RColorBrewer)
ggplot(df,aes(x,y,colour=group))+geom_line()+geom_point(aes(shape=group),size=5)+
  scale_colour_manual(values=rep(brewer.pal(5,"Set1"),times=4))+
  scale_shape_manual(values=rep(c(15,16,17,18,19),each=5))

введите описание изображения здесь

person Didzis Elferts    schedule 27.02.2013
comment
Вот именно! Идеальное решение. Спасибо! - person LondonRob; 27.02.2013
comment
как добавить метку к такой комбинированной легенде? - person user4786271; 12.06.2015
comment
@ user4786271 Проверьте этот вопрос, в списке указаны как минимум два варианта. там. - person tonytonov; 15.06.2015