本文介绍了在ggplot2中将一列用于颜色,将另一列用于图例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有5个变量的数据框:

I have a data frame with 5 variable as :

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 作为图例中的标签.

I would like to use the Color column as color definition and Main as labels in the legend.

我尝试过

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

但是没用!

我找不到自动执行此操作的方法,我需要一个线索.谢谢.

I don't find the way to do it automatically and I need a clue.Thank you.

推荐答案

可重现的示例:

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 包.

You need to arrange by "Main" column to avoid colors being messed up with labels.
%.>% pipe is from wrapr package.

这篇关于在ggplot2中将一列用于颜色,将另一列用于图例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-10 19:15