我想绘制一个带有两种情节的散点图,第一个点代表带有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)
问题在于先前分配给第一组的形状(符号)发生了变化,我需要第一组点的填充符号和第二组的空心符号。
还有另一个问题:未填充的符号出现同心形状!
谢谢!
答案 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))