ggplot2 группирует данные по первому слову в имени строки и присваивает цветовой палитре каждой группе - PullRequest
0 голосов
/ 02 мая 2019

У меня есть следующий фрейм данных, кафе:

cafe_type   X   Y
bread - white   354 1
bread - wheat   674 3
bread - rye 756 4
bread - sourdough   234 2
milk - cow  454 6
milk - soy  345 7
milk - almond   323 8
bagel - white   234 3
bagel - everything  453 4
bagel - wheat   556 6
bagel - egg 678 9

Я получил эти данные с помощью:

ggplot(cafe, aes(X,Y)) + geom_point()

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

Спасибо, Джесси

1 Ответ

0 голосов
/ 02 мая 2019

Первое, на что я бы хотел обратить внимание, - это поместить ваши продукты в качестве фактического столбца в вашем data.frame.

cafe$item <- factor(rownames(cafe), levels = unique(rownames(cafe)))

Далее вы хотели бы построить сюжет. Добавьте элемент в aes() как цвет.

ggplot(df, aes(X, Y, colour = item)) +
  geom_point() +
  scale_colour_manual(
    breaks = levels(cafe$item),
    limits = levels(cafe$item),
    values = c("orange", "darkorange", "orange2", "darkorange2",
               "dodgerblue", "blue", "deepskyblue",
               "limegreen","forestgreen","green","lawngreen")
  )

Теперь хитрый бит правильно определяет порядок продуктов, что делается через breaks и limits внутри scale_colour_manual(). Немного работы - это выбрать цвета для ваших продуктов, которые вам нравятся, но вы можете экспериментировать с цветами. Вот как выглядел сюжет для меня:

enter image description here

Я не знаю, откуда произошли ошибки в вашем group_by(), но я не думаю, что вам это понадобится для составления сюжета. Удачи!

...