r - 在ggplot2中使用一列颜色和另一列作为图例
问题描述
我有一个包含 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))
但它不起作用!
我找不到自动执行此操作的方法,我需要一个线索。谢谢你。
解决方案
可重现的例子:
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
包装。
推荐阅读
- css - 在移动设备上一个接一个地显示 Coolum 数据,而在桌面上,它仅使用 CSS 成行显示,
- python - django.db.utils.ProgrammingError:递归模型不存在关系
- android - 如何使用 Jetpack Compose 在我的屏幕中使用 9 补丁可绘制对象 (.9.png)?
- r - 保存具有不同数据类型的列表
- javascript - 如何在图表 js 的 Y 轴上添加此刻度颜色?
- node.js - 从 Apigee 服务器获取 502 Bad Gateway
- azure-devops - Azure DevOps:使用 API 获取发布中包含的所有构建
- c# - 我的查询根本不起作用并抛出错误
- firebase - Firebase 分析和应用跟踪透明度
- fortran - Fortran 代码在 Mac 和 Windows 系统上生成不同的结果