我有一个带有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))
但是没用!
我找不到自动执行此操作的方法,我需要一个线索。 谢谢。
答案 0 :(得分:1)
可复制的示例:
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
包。
答案 1 :(得分:0)
这可能有帮助。
ggplot( ... +
scale_color_manual(labels = Main, values = Color) +
...)
否则,更多的代码可能会有用。