在ggplot2中叠加两个带有不同颜色比例的散点图

3

我正在尝试在ggplot2中叠加两个散点图。目标是使数据点的外部根据一个变量(6个类别,factor)着色,而内部则使用另一个连续变量(numeric)的渐变颜色进行填充。

我写了两段代码,每一段都可以单独工作(请参见下面的截屏)。

    ggplot(PCA_isotopes_2, aes(x=PC1, y=PC2)) +
              theme_classic() +
              geom_point(aes(color = factor(subspecies)), shape = 1, size = 2.95, stroke=1, alpha=5/6) +
              scale_color_manual(breaks = c("gutturalis", "rg.hybrids", "rt", "rustica", "tg", "tytleri"), values=c("#0066CC", "#9933CC", "#FFCC99", "#CC0000", "#33CC99", "#FFFF00")) 

ggplot(PCA_isotopes_2, aes(x=PC1, y=PC2)) +
          theme_classic() +  
          geom_point(aes(color = carbon.ratio), size = 2.88, alpha=5/6) +
          scale_colour_gradient(low = "blue", high = "yellow")

在此输入图像描述

在此输入图像描述

当我尝试这样叠加它们时:

    p <- ggplot(PCA_isotopes_2, aes(x=PC1, y=PC2)) +
  theme_classic() +
  geom_point(aes(color = carbon.ratio), size = 2.88, alpha=5/6) +
  scale_colour_gradient(low = "blue", high = "yellow")

    p + geom_point(aes(color = factor(subspecies)), shape = 1, size = 2.95,         stroke=1, alpha=5/6) +
    scale_color_manual(breaks = c("gutturalis", "rg.hybrids", "rt", "rustica", "tg", "tytleri"), values=c("#0066CC", "#9933CC", "#FFCC99", "#CC0000", "#33CC99", "#FFFF00")) 

我看到以下错误信息:
“'color'的比例已存在。添加另一个'color'的比例,将替换现有的比例。 错误:提供了连续的值给离散比例。”
我花费了几个小时来尝试弄清楚它为什么不起作用。我非常感谢您的帮助!
谢谢, Georgy
1个回答

3
一般来说,您只能映射一个美学元素。这里有一个解决方法,使用连续变量的fill美学元素作为替代方案,配合shape = 21。然而,我更喜欢完全映射到不同的美学元素,比如第二个版本中的shape
library(tidyverse)
ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) +
  theme_classic() +
  geom_point(
    mapping = aes(colour = Species),
    shape = 1,
    size = 3,
    stroke = 2,
    alpha = 5 / 6
    ) +
  geom_point(
    mapping = aes(fill = Sepal.Length, colour = NA),
    size = 2.88,
    alpha = 5 /6,
    shape = 21
  ) +
  scale_fill_gradient(low = "blue", high = "yellow")

library(viridis)
#> Loading required package: viridisLite
ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) +
  theme_classic() +
  geom_point(
    mapping = aes(colour = Sepal.Length, shape = Species),
    size = 3,
    alpha = 5 / 6
  ) +
  scale_colour_viridis()

这段文字是由 reprex包 (v0.2.0) 在 2018-04-19 创建的。


非常感谢,第一个示例正是我想要的。是否可以为第一个geom_point分配自定义颜色? - Georgy
是的,我把它们拿掉了,因为这样看起来更不可读,但是您可以将scale_colour_manual放回去。 - Calum You
确实,第二个版本看起来更好。最后一个问题 - 如何在那里分配自定义形状?我尝试了这个:ggplot(PCA_isotopes_2,aes(x = PC1,y = PC2))+ theme_classic()+ geom_point(mapping = aes(colour = carbon.ratio,shape = subspecies),size = 2,alpha = 5/6,scale_shape_manual(breaks = c(“gutturalis”,“rg.hybrids”,“rt”,“rustica”,“tg”,“tytleri”),values = c(0,1,2,5,6,3)))+ scale_colour_viridis()。然后出现错误:“ggplot2不知道如何处理ScaleDiscrete / Scale / ggproto类的数据”。 - Georgy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接