首页 文章

在ggplot2中叠加两个具有不同色阶的散点图

提问于
浏览
3

我试图在ggplot2中叠加两个散点图 . 目标是根据一个变量(6个类别,因子)使点的外部部分着色,并且内部填充另一个连续变量(数字)的渐变颜色 .

我写了两段代码,每一段都是独立工作的(请看下面的截图) .

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")

enter image description here

enter image description here

当我尝试以这种方式叠加它们时:

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"))

我收到错误消息:

“'颜色'的比例已经存在 . 为'颜色'添加另一个比例,它将取代现有比例 . 错误:连续值提供给离散比例” .

我花了几个小时试图弄清楚它为什么不起作用 . 我将非常感谢帮助!

谢谢,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 package(v0.2.0)创建于2018-04-19 .

相关问题