Используйте один столбец для цвета и другой для легенды в ggplot2 - PullRequest
0 голосов
/ 06 января 2019

У меня есть фрейм данных с 5 переменными как:

head(drop(rast.df))
  Longitude Latitude Values   Color
1 -15.10068 16.68171     32 #98d604
2 -15.08271 16.68171     32 #98d604
3 -14.99288 16.68171     32 #98d604
4 -14.97492 16.68171     32 #98d604
5 -14.95695 16.68171     32 #98d604
6 -15.11865 16.66375     32 #98d604
                                                                    Main
1 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.
2 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.
3 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.
4 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.
5 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.
6 Sparse Herbaceous: dominated by herbaceous annuals (<2m) 10-60% cover.

Я хотел бы использовать столбец Color в качестве определения цвета и Main в качестве меток в легенде.

Я пытался

ggplot(rast.df)+
  geom_raster(aes(x = Longitude, y = Latitude, fill=as.factor(Values)))+
  scale_fill_manual(values=as.character(unique(rast.df$Color)), 
                       name="Experimental\nCondition",
                       breaks=unique(rast.df$Values),
                       labels=unique(rast.df$Main))

но это не работает!

Я не нахожу способ сделать это автоматически, и мне нужна подсказка. Спасибо.

Ответы [ 2 ]

0 голосов
/ 07 января 2019

Воспроизводимый пример:

tibble(
  Longitude = 1:5,
  Latitude = 10:14,
  Color = c('red', 'green', 'blue', 'red', 'green'),
  Main = c('A', 'C', 'B', 'A', 'C')
) %>%
  arrange(Main) %.>%
  ggplot(., aes(
    x = Longitude,
    y = Latitude,
    color = Main
  )) +
  geom_point() +
  scale_color_manual(values = unique(.$Color))

Вам необходимо расположить столбец «Основной», чтобы цвета не перепутались с метками.
%.>% труба из wrapr упаковки.

0 голосов
/ 07 января 2019

Это может помочь.

ggplot( ... +
        scale_color_manual(labels = Main, values = Color) +
       ...)

В противном случае может пригодиться больше кода.

...