首页 > 解决方案 > 当一个图在其数据框中定义了颜色时,如何在 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变成“黑色”?

标签: rggplot2

解决方案


这应该有效。没有数据,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')

输出:

在此处输入图像描述


推荐阅读