Как перерабатывать цвета в палитре цветоводителей, используя линейные символы

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

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

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

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

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

Спасибо!

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

Вот некоторые (санированные) данные для игры и код 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")

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))

Другие вопросы по тегам