r-ggplot2中的三重图例,包括点形状、填充和颜色



我的数据帧(见下面的链接)包含来自几个模型的输出,我想根据对其进行"分类">

  • 型号名称(9款)->9种形状填充颜色
  • 模型域(每个模型都有这两种类型中的一种:"MED"或"EURO")->两种空心形状类型
  • 原生分辨率(每个型号有两个"版本":"HR"one_answers"LR")->2种形状轮廓颜色

此外,还包括一个单独的观测数据集,该数据集应显示其自身的颜色和填充形状。

总之,我有9x2=18个点类型,每个点类型都有一个"域"标签,外加一个观测点类型。

以下是一件最简单的事情,但根本不起作用。此外,我不想使用scale_*_manual为每个项目手动指定颜色和形状。

library(ggplot2)
#Sorry for the wget, I can't seem to make load() read the url directly
system("wget https://copy.com/LrEznd8QCmzVBNyz/df_pr_PDF_alps_044.Rdata?download=1") 
load("df_pr_PDF_alps_044.Rdata?download=1") #This loads df
colnames(df) #Take a look at the columns
ggplot(data=df[which(df$PDF > 0),], aes(x=x, y=PDF)) +
geom_point(aes(shape=domain, colour=nativeresolution, fill=model), alpha=0.7, size=2)+
scale_shape_manual(values=c(21,22,23))

我已经尝试了一些修复,比如这里建议的:

ggplot2:一个具有两个视觉属性的图例,源自公共变量

将颜色和形状的图例组合为一个图例

如何合并颜色和形状?

但我似乎找不到解决这个看似简单的问题的办法。

您可以使用override.aes在填充和颜色的辅助线中指定一个空心形状。此外,如果指定colour = NA作为填充,您将在指南中获得"仅填充"。

library(ggplot2)
system("wget https://copy.com/LrEznd8QCmzVBNyz/df_pr_PDF_alps_044.Rdata?download=1") 
load("df_pr_PDF_alps_044.Rdata?download=1")
ggplot(data=df[which(df$PDF > 0),],
aes(x = x, y = PDF, shape = domain, colour = nativeresolution, fill = model)) +
geom_point(alpha=0.7, size=2) +
scale_shape_manual(values=c(21,22,23)) +
guides(fill = guide_legend(override.aes = list(shape = 21, colour = NA)),
colour = guide_legend(override.aes = list(shape = 21)))

这修复了图例,但读取三个变量映射到点的散点图可能不容易。。。你有没有考虑过使用facet?

最新更新