R 如何在lapply中设置ggplot的日期轴语言?

R 如何在lapply中设置ggplot的日期轴语言?,r,ggplot2,lapply,date-formatting,R,Ggplot2,Lapply,Date Formatting,我在更改ggplot日期轴的语言时遇到问题。通常,我只需使用Sys.setlocale(),然后创建绘图。现在,我已经创建了一个函数,它可以完全做到这一点(在其他特定于布局的更改中),并且工作得很好。但是,当我在lappy()中使用此函数时,它不再工作。这真让我困惑。在ggplot中是否有其他方法设置日期轴语言 这里有一个最小的可复制示例:(我在Windows上工作,因此其他人可能需要更改Sys.setlocale()中ggtheme()内的locale-参数) 库(ggplot2) #样本数据

我在更改
ggplot
日期轴的语言时遇到问题。通常,我只需使用
Sys.setlocale()
,然后创建绘图。现在,我已经创建了一个函数,它可以完全做到这一点(在其他特定于布局的更改中),并且工作得很好。但是,当我在
lappy()
中使用此函数时,它不再工作。这真让我困惑。在
ggplot
中是否有其他方法设置日期轴语言

这里有一个最小的可复制示例:(我在Windows上工作,因此其他人可能需要更改
Sys.setlocale()
ggtheme()内的
locale
-参数)

库(ggplot2)
#样本数据

df我相信在渲染绘图时会检索和使用区域设置,而不是构建绘图。因此,您在生成过程中设置的区域设置没有被引用。您是否愿意将相关语言添加为数据列?@r2evans,很好,您是对的。渲染绘图时使用区域设置…我应该自己想出这个方法。这没有必要,因为我可以在生成SVG之前使用
Sys.setlocale()
。非常感谢你的帮助!
library( ggplot2 )

# sample data 
df <- data.frame( "Date" = as.Date( c( "2021-04-01",
                                       "2021-04-20",
                                       "2021-05-07",
                                       "2021-05-25" ) ),
                  "Value" = c( 1, 2, 3, 4 ) )

# function to change Date-axis language
ggtheme <- function( plot, language ){
  
  switch( language,
          "EN" = Sys.setlocale( category = "LC_ALL", locale = "english" ),
          "DE" = Sys.setlocale( category = "LC_ALL", locale = "german" ),
          Sys.setlocale( category = "LC_ALL", locale = "english" ) )
  
  plot <- plot
  
  return( plot )
  
}

# check current locale (just as information)
Sys.getlocale()

# lapply to create plots with english and german x-axis (date) labels
ls_plots <- lapply( c( "DE", "EN" ), function( LANGUAGE ){
  
  plot <- ggplot( df, 
                  aes( x = Date, 
                       y = Value ) ) +
    geom_line() +
    ggtitle( paste( "Here x-axis should be in", LANGUAGE ) )
  
  plot <- ggtheme( plot, language = LANGUAGE )
  
  return( plot )
  
})

names( ls_plots ) <- c( "DE", "EN" )

# output (for DE it should be Mai; for EN it should be May)
ls_plots$DE
ls_plots$EN