R ggplot:绘制3个类别的变量

时间:2018-03-23 01:31:59

标签: r ggplot2

我正在使用R中的CO2数据集,我想将摄取和浓度分别绘制为x和y值,按形状和填充分类,分别指定为处理和植物。另外,我想使用geom_polygon Type类别进一步对图的空间进行分类。

我可以单独执行填充和形状以及geom_polygon,但无法找到将所有这些参数组合在一起的方法。到目前为止,我能够做到这一点的唯一方法是使用注释(rect)来创建一个表示Type的框。这是我重现这些图的代码。

library(ggplot2)
library(plyr)

data.set <- as.data.frame(CO2)

####1st plot
ggplot(data.set, aes(x=as.numeric(uptake), 
                 y=as.numeric(conc),
                 fill=Plant, 
                 shape=Treatment))+
geom_point(size=2, stroke=1)+
geom_point(aes(color=Plant),size=1)+
scale_shape_manual(values = c(21, 22))

enter image description here

find_hull <- function(df) df[chull(df$uptake, df$conc), ]
hulls <- ddply(data.set, "Type", find_hull)

####2nd plot
ggplot(data = data.set, aes(x=as.numeric(uptake), 
                                y=as.numeric(conc),
                                fill=Type,
                                colour=Type))+
geom_point() + 
geom_polygon(data = hulls, alpha = 0.5)

enter image description here

1 个答案:

答案 0 :(得分:1)

您只需将形状和颜色美学从ggplot移动到特定的geom图层:

ggplot(data.set, aes(x=as.numeric(uptake), y=as.numeric(conc))) +
  geom_polygon(data = hulls, alpha = 0.5, aes(fill = Type)) +
  geom_point(size = 2, stroke = 1, aes(shape = Treatment)) +
  geom_point(aes(color = Plant,shape = Treatment), size = 1) +
  scale_shape_manual(values = c(21, 22))