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

R 在ggplot2中叠加两个具有不同颜色比例的散点图,r,ggplot2,R,Ggplot2,我试图在ggplot2中覆盖两个散点图。目标是使点的外部根据一个变量(6个类别,因子)着色,内部填充另一个连续变量(数字)的渐变色 我写了两段代码,每段代码都独立工作(请参见下面的截图) 当我尝试以这种方式覆盖它们时: p <- ggplot(PCA_isotopes_2, aes(x=PC1, y=PC2)) + theme_classic() + geom_point(aes(color = carbon.ratio), size = 2.88, alpha=5/6

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

我写了两段代码,每段代码都独立工作(请参见下面的截图)

当我尝试以这种方式覆盖它们时:

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

p一般来说,你只能绘制一张美学地图。这里有一个变通方法,它使用连续变量的
填充
美学作为替代,使用
shape=21
。然而,我更愿意映射到另一种美学,例如完全不同的
形状
,就像在第二个版本中一样

库(tidyverse)
ggplot(虹膜,aes(x=花瓣长度,y=花瓣宽度))+
主题(经典)+
几何点(
映射=aes(颜色=物种),
形状=1,
尺寸=3,
冲程=2,
α=5/6
) +
几何点(
映射=aes(填充=萼片长度,颜色=NA),
尺寸=2.88,
α=5/6,
形状=21
) +
比例填充梯度(低=蓝色,高=黄色)

库(viridis)
#>加载所需的包:viridisLite
ggplot(虹膜,aes(x=花瓣长度,y=花瓣宽度))+
主题(经典)+
几何点(
映射=aes(颜色=萼片长度,形状=种类),
尺寸=3,
α=5/6
) +
鳞片颜色绿色()


由(v0.2.0)于2018年4月19日创建。

非常感谢,第一个示例正是我想要的。是否可以为第一个几何点指定自定义颜色?是的,我将其删除,因为它看起来更不可读,但欢迎您将“缩放颜色”手册放回索引中,第二个版本看起来更好。最后一个问题-如何在那里分配自定义形状?我试过这个:ggplot(PCA_同位素2,aes(x=PC1,y=PC2))+theme_classic()+geom_point(映射=aes(颜色=碳比,形状=亚种),大小=2,α=5/6,比例形状手册(断裂=c(“gutturalis”,“rg.Hybrides”,“rt”,“rustica”,“tg”,“tytleri”),值=c(0,1,2,5,6,3))+比例颜色绿色()并得到一个错误“ggplot2不知道如何处理ScaleDiscrete/Scale/ggproto类的数据”
    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"))