ggplot2中的三重传奇,带有点形状,填充和颜色

时间:2015-04-21 13:12:25

标签: r ggplot2

我的数据框(参见下面的链接)包含多个模型的输出,我想要"分类"根据:

  • 型号名称(9个型号) - > 9种形状填充颜色
  • 模型域(每个模型具有以下两者之一:" MED"或" EURO") - >两种空心形状
  • 原生分辨率(每个模型有两个"版本":" HR"和" 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: One legend with two visual properties derived from common variable

Combine legends for color and shape into a single legend

How to merge colour and shape?

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

1 个答案:

答案 0 :(得分:1)

您可以使用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)))

这修复了图例,但是可能不容易读取散点图,其中三个变量映射到点...您是否考虑过使用构面?