R 如何更改ggplot中一系列绘图的标题?

R 如何更改ggplot中一系列绘图的标题?,r,function,ggplot2,R,Function,Ggplot2,我创建了一个函数,该函数通过组变量“gear”拆分数据帧,并为每个新的df绘制图。那么,如何更改每个情节的标题 rank20 <- function(df){ sdf <- df clusterName <- paste0("cluster",sdf$gear) splitData <- split(sdf,clusterName) plot <- lapply(splitData, fun

我创建了一个函数,该函数通过组变量“gear”拆分数据帧,并为每个新的df绘制图。那么,如何更改每个情节的标题

    rank20 <- function(df){
      sdf <- df
      clusterName <- paste0("cluster",sdf$gear)
      splitData <- split(sdf,clusterName)
      plot <- lapply(splitData, function (x) {ggplot(x, aes(mpg, cyl)) + geom_point()+
          labs(x="mpg", y="cyl",
               title="This Needs To Be Changed") + 
          theme_minimal()})
      do.call(grid.arrange,plot)
    }
    rank20(mtcars)

rank20我发现使用
lappy
将索引用作输入更容易。如果需要将列表链接到另一个元素,例如列表名称,则提供更大的灵活性:

rank20 <- function(df, col="gear"){
  sdf <- df
  clusterName <- paste0("cluster", sdf[[col]])
  splitData <- split(sdf, clusterName)
  # do the apply across the splitData indexes instead and pull out cluster
  # name from the column
  plot <- lapply(seq_along(splitData), function(i) {
    X <- splitData[[i]]
    i_title <- paste0(col, X[[col]][1])
    ## to use clusterName instead eg cluster3 instead of gear3:
    #i_title <- paste0(col, names(splitData)[i])
    ggplot(X, aes(mpg, cyl)) + 
      geom_point() +
      labs(x="mpg", y="cyl", title=i_title) + 
      theme_minimal()
  })
  do.call(grid.arrange,plot)
}
rank20(mtcars)

rank20我发现使用
lappy
将索引用作输入更容易。如果需要将列表链接到另一个元素,例如列表名称,则提供更大的灵活性:

rank20 <- function(df, col="gear"){
  sdf <- df
  clusterName <- paste0("cluster", sdf[[col]])
  splitData <- split(sdf, clusterName)
  # do the apply across the splitData indexes instead and pull out cluster
  # name from the column
  plot <- lapply(seq_along(splitData), function(i) {
    X <- splitData[[i]]
    i_title <- paste0(col, X[[col]][1])
    ## to use clusterName instead eg cluster3 instead of gear3:
    #i_title <- paste0(col, names(splitData)[i])
    ggplot(X, aes(mpg, cyl)) + 
      geom_point() +
      labs(x="mpg", y="cyl", title=i_title) + 
      theme_minimal()
  })
  do.call(grid.arrange,plot)
}
rank20(mtcars)

rank20我可以建议一种稍微不同的方法(但也可以使用中建议的循环索引)。我正在创建一个绘图列表,然后使用patchwork::wrap_绘图进行绘图。我发现它更平滑

库(tidyverse)
图书馆(拼凑)
len_ind%
map2(1:len_ind,,,函数(x,y){
ggplot(y、aes(mpg、cyl))+
几何点()+
实验室(x=“mpg”,y=“cyl”,
标题=名称(.)[x]
) +
主题_极小值()
})
包裹图(ls图)+图布局(ncol=1)

刚刚注意到这是错误的列-使用cyl而不是齿轮。哎呀。把它包装成一个函数很有趣:


plot\u col我可以建议一种稍微不同的方法(但也可以使用中建议的循环索引)。我正在创建一个绘图列表,然后使用patchwork::wrap_绘图进行绘图。我发现它更平滑

库(tidyverse)
图书馆(拼凑)
len_ind%
map2(1:len_ind,,,函数(x,y){
ggplot(y、aes(mpg、cyl))+
几何点()+
实验室(x=“mpg”,y=“cyl”,
标题=名称(.)[x]
) +
主题_极小值()
})
包裹图(ls图)+图布局(ncol=1)

刚刚注意到这是错误的列-使用cyl而不是齿轮。哎呀。把它包装成一个函数很有趣:


plot\u col未测试,但您是否尝试了
mapply()
SIMPLIFY=FALSE
参数?嘿@Yulia Kentieva,如果能用
data(mtcars)
data(diamonds)
这样的公共数据集重现此函数,那将是一件非常好的事情。阿尔瓦诺亚丁内斯谢谢您!我把它换成了mtcars。我希望现在不进行测试会更好,但是您是否尝试过
mapply()
SIMPLIFY=FALSE
参数?嘿@Yulia Kentieva,如果能用
data(mtcars)
data(diamonds)
这样的公共数据集来重现此函数,那就太好了,也很高兴看到您的预期输出。@alvaronartinez谢谢您!我把它换成了mtcars。我希望现在好多了谢谢,这对mtcars很有效。但是我改变了初始数据帧。我应该用另一种方式提出我的问题。我需要从splitData df name本身而不是从列中获取标题。有可能吗?是的,答案是这样的。请看散列出来的行
#i#u标题哦,我没有看到。非常感谢。它起作用了!谢谢,它适用于mtcars。但是我改变了初始数据帧。我应该用另一种方式提出我的问题。我需要从splitData df name本身而不是从列中获取标题。有可能吗?是的,答案是这样的。请看散列出来的行
#i#u标题哦,我没有看到。非常感谢。它起作用了!谢谢,它适用于mtcars。但是我改变了初始数据帧。我应该用另一种方式提出我的问题。我需要从splitData df name本身而不是从列中获取标题。有可能吗?@YuliaKentieva不太清楚你的意思。在mtcars的示例中,您希望在标题中显示什么名称?谢谢,它适用于mtcars。但是我改变了初始数据帧。我应该用另一种方式提出我的问题。我需要从splitData df name本身而不是从列中获取标题。有可能吗?@YuliaKentieva不太清楚你的意思。在mtcars的示例中,您希望在标题中显示什么名称?