R 为ggplot2定义一个新的geom_xxx

R 为ggplot2定义一个新的geom_xxx,r,ggplot2,R,Ggplot2,我经常需要一个内有黑点的geom_路径。 因此,我希望有一个新的geom_dotpath,可以用来代替调用 geom_路径和geom_点 LineColours <- brewer.pal(n=8,name="Paired") ggplot() + geom_path(data=mtcars, aes(x=mpg, y=qsec), size=1.5, colour=LineColours[3]) + geom_point(data=mtcars, aes(x=mpg, y=qsec),

我经常需要一个内有黑点的
geom_路径
。 因此,我希望有一个新的
geom_dotpath
,可以用来代替调用
geom_路径
geom_点

LineColours <- brewer.pal(n=8,name="Paired")

ggplot() +
geom_path(data=mtcars, aes(x=mpg, y=qsec), size=1.5, colour=LineColours[3]) +
geom_point(data=mtcars, aes(x=mpg, y=qsec), size=1.5, colour=LineColours[4]) 

linecolors我不知道如何选择颜色,但是定义一个全新的几何图形应该不是很有必要。您应该能够编写一个返回相关层的函数:

geom_dotpath <- function(data,x,y,pathCol,ptCol,...){
  p1 <- geom_path(data = data,aes_string(x = x,y = y),color = pathCol,...)
  p2 <- geom_point(data = data,aes_string(x = x,y = y),color = ptCol,...)
  list(p1,p2)
}

ggplot() + geom_dotpath(data = mtcars,
                        x = "mpg",
                        y = "qsec",
                        pathCol = LineColours[3],
                        ptCol = LineColours[4],
                        size = 1.5)

geom_dotpath我不知道颜色选择,但是定义一个全新的geom应该不是必要的。您应该能够编写一个返回相关层的函数:

geom_dotpath <- function(data,x,y,pathCol,ptCol,...){
  p1 <- geom_path(data = data,aes_string(x = x,y = y),color = pathCol,...)
  p2 <- geom_point(data = data,aes_string(x = x,y = y),color = ptCol,...)
  list(p1,p2)
}

ggplot() + geom_dotpath(data = mtcars,
                        x = "mpg",
                        y = "qsec",
                        pathCol = LineColours[3],
                        ptCol = LineColours[4],
                        size = 1.5)

geom\u dotpath您可能会发现,一旦习惯将应用于整个图形的所有属性放入原始的
ggplot()
调用中,将新的geom添加到绘图中所需的工作量就会减少-在您的示例中,
data=mtcars,aes(x=mpg,y=qsec)
可以移动到
ggplot()
调用中,为每个单独的几何图形保留更少的键入。一旦习惯将应用于整个图形的所有属性放入原始的
ggplot()
调用中,您可能会发现将新几何图形添加到绘图中的工作量会更少。在您的示例中,
data=mtcars,aes(x=mpg,y=qsec)
可以移动到
ggplot()中
call,为每个Geom留下更少的输入。