我正在尝试改变原始情节调用中未定义的几何美学。
例如形状和大小
p=iris%>%ggplot(aes(x=Sepal.Length,y=Sepal.Width,colour=Species))+geom_point()+theme_bw()
change_shape=function(a){
a$layers[[1]]$aes_params[['shape']]=5
a$layers[[1]]$aes_params[['size']]=10
return(a)
}
pnew=change_shape(p)
p
答案 0 :(得分:0)
从现有的绘图对象克隆图层(l)并使其不连接到原始图
cloneLayer=function(l){
layer.names=c('mapping','data','geom','position',
'stat','show.legend','inherit.aes',
'aes_params','geom_params','stat_params')
x=sapply(layer.names,function(y){
b=l[[y]]
if('waiver'%in%class(b)) b=NULL
if(y=='geom') b=eval(parse(text=class(b)[1]))
if(y%in%c('position','stat')) {
b=gsub(y, "", tolower(class(b)[1]))
}
b
})
x$params=append(x$stat_params,x$geom_params)
x$params=append(x$params,x$aes_params)
x$params=x$params[!duplicated(names(x$params))]
x$geom_params<-x$aes_params<-x$stat_params<-NULL
do.call(layer,x)
}