r - 当一个图在其数据框中定义了颜色时,如何在 ggplot 中叠加散点图?
问题描述
我正在尝试叠加两个散点图。这是基本代码:
ggplot() + geom_point(data = df, aes(A, B, color = Cluster), shape=1) +
geom_point(data = as.data.frame(centers), aes(A, B), shape=13, size=7, alpha = 5)
但是,当我尝试为重叠的簇中心(内部带有 X 的那些圆圈)添加颜色时:
ggplot() + geom_point(data = df, aes(A, B, color = Cluster), shape=1) +
geom_point(data = as.data.frame(centers), aes(A, B, color = "red"), shape=13, size=7, alpha = 5)
我收到以下错误: “错误:提供给连续刻度的离散值”
这是我用来绘制两个叠加层中的第一个的数据框的一部分:
> df
A B Cluster
1 1.33300195 -1.4524680585 2
2 1.41102294 -0.7889431279 2
3 1.36350553 -1.4437548005 2
4 1.61462300 -0.7145174514 2
5 -0.64722704 0.8449845639 1
6 1.33855918 -0.9161504530 2
7 1.33467865 -2.1513899524 2
8 1.50842550 -0.5170262065 2
9 1.67045671 -0.3644476090 2
10 1.32328373 -1.5496692059 2
我的理论是 ggplot 将该数据框的“集群”列解释为连续变量。有没有办法改变它,使其离散?我应该改为使用一列颜色作为因素吗?例如:1变成“蓝色”,2变成“黑色”?
解决方案
这应该有效。没有数据,centers
因此无法将其添加到情节中。你是对的,连续变量正在弄乱情节。而是将其设置为factor()
并用于scale_color_manual()
更改颜色。这里的代码:
library(ggplot2)
#Code
ggplot() + geom_point(data = df, aes(A, B, color = factor(Cluster),
fill = factor(Cluster))) +
geom_point(data = as.data.frame(centers), aes(A, B, color = "red"),
shape=13, size=7, alpha = 5)+
scale_color_manual(values=c('blue','black'))+labs(color='Cluster',fill='Cluster')
输出:
或者保持原来的形状:
#Code 2
ggplot() + geom_point(data = df, aes(A, B, color = factor(Cluster)),shape=1) +
geom_point(data = as.data.frame(centers), aes(A, B, color = "red"),
shape=13, size=7, alpha = 5)+
scale_color_manual(values=c('blue','black'))+labs(color='Cluster')
输出:
推荐阅读
- api - 谷歌云管理员身份验证
- node.js - node-mysql2:结果集未反映最新结果
- javascript - Javascript剪贴板复制功能不起作用onclick锚标记onclick
- python - 如果使用 xlwings 在 python 中不存在新工作表,如何添加新工作表
- rest - HAPROXY 如何监听 api 休息
- jenkins-pipeline - 将文件内容配置为詹金斯中的复选框列表
- android - com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized
- linux - 替换shell脚本中的子字符串
- spring-boot - 为控制器中的参数添加自定义验证注释 - JSR-303
- jsf - 如何使用 h:commandLink 更新和打开 ap:dialog 而无需重新加载其他组件