带有两种点ggplot2的散点图中的符号

时间:2014-04-02 14:54:28

标签: r ggplot2 scatter-plot

我想绘制一个带有两种情节的散点图,第一个点代表带有sd误差条的平均值

sou <- data.frame (Source=c("Copepods","Macroalgae","MPB"),md13C=rnorm(3,-18,5),sd13C=rnorm(3,5,2),md15N=rnorm(3,3,2),sd15N=rnorm(3,0.20,0.2))

require(ggplot2)

p <- ggplot(sou,aes(x=md13C, y=md15N))  
p <- p + geom_point(aes(shape=Source),
                    fill = "black",size=4,)+scale_shape_manual(values=c(21,22,23))

p <- p + geom_errorbarh(aes(xmin = md13C-sd13C,xmax = md13C+sd13C),height=0)
p <- p + geom_errorbar(aes(ymin = md15N-sd15N,ymax = md15N+sd15N),width=0)+theme_bw()
p

这张图填充了我选择的形状,现在我将添加第二组点

con <- data.frame(FeedingGroup=rep(c("deposivore", "omnivore","ectosymbionts","deposit feeder",
                                        "scavenger","predator","filter feeder","predator/scavenger"),each=6),
                 Site=rep(c("Creek","Faro","Isla"),each=16),
                 d13C=rnorm(48,-18,5),d15N=rnorm(48,5,5))


p <-p +theme(legend.justification=c(0,1), legend.position=c(0,1),legend.title=element_blank())
brk <- c(unique(as.character(sou$Source)),unique(as.character(con$FeedingGroup)))
p + geom_point(data=con, aes(x=d13C, y=d15N,color=Site,shape=FeedingGroup)) + scale_shape_manual(breaks=brk,values=c(21,22,23,0,1,2,5,6,7,9,10,11,3,4,8,12,13))+guides(colour=FALSE)

问题在于先前分配给第一组的形状(符号)发生了变化,我需要第一组点的填充符号和第二组的空心符号。

还有另一个问题:未填充的符号出现同心形状!

谢谢!

1 个答案:

答案 0 :(得分:2)

?discrete_scale的描述中,您将找到breaks参数的以下内容:&#34;此参数不会以任何方式影响数据的缩放方式 - 它只会影响外观传奇。&#34;如果您阅读下一行,则表示limits是&#34;一个字符向量,用于指定比例的数据范围。以及它们在指南中显示的默认顺序。&#34;因此,您希望使用limits代替breaks

scale_shape_manual(limits=brk, values=c(21,22,23,0,1,2,5,6,7,9,10,11,3,4,8,12,13))