gpt4 book ai didi

r - 如何通过 R 函数将多个参数传递给 ggplot,包括美学和比例格式?

转载 作者:行者123 更新时间:2023-12-02 14:58:04 25 4
gpt4 key购买 nike

如何将多个参数传递给我的 ggplot 函数?

这是我想要自动化的绘图示例。

library(ggplot2)
library(scales)

p <- ggplot(diamonds, aes(x=cut, y=price) ) +
geom_boxplot() +
scale_y_continuous(labels = dollar)
p

enter image description here

但我想绘制多个不同的变量并使用适当的比例,例如价格、深度等,有些以美元为单位。

所以我做了一个函数

myfunction <- function(var1,var2){
p <- ggplot(diamonds, aes(x=cut, y= var1) ) +
geom_boxplot() +
scale_y_continuous(labels = var2)
p
return(p)
}

当我测试该功能时,它不起作用。这两个参数各自会导致不同的错误。

myfunction("price","dollar")

对于 var1 我得到:

Error: Discrete value supplied to continuous scale 

和 var2:

Error in f(..., self = self) : Breaks and labels are different lengths
  • 问题 1。为什么这不起作用?这对我来说是最重要的问题。

然后我想制作多个图表,我可以用 for 循环来做,但我一直听说我应该用 apply 来做。这是我尝试过的。

  • 问题 2。如何使用 apply?
  • 制作多个图表
FirstPlotData <- c("price","dollar")
SecondPlotData <- c("depth", "comma")
plotMetaData <- data.frame(FirstPlotData,SecondPlotData)
  • lapply 不适用于我的多个参数。它可以传递多个参数吗?
lapply(plotMetaData, function(avar,bvar)myfunction(avar, bvar))
  • mapply 行得通吗?怎么样?
mapply(mytestfunction,plotMetaData[1,],plotMetaDataList[2,])

提前致谢。我注意到我可以用 facet 绘制多个图形,但对于我更复杂的示例,隐藏异常值、缩放并进行统计,然后绘制多个图并放入 {cowplot} 网格似乎更容易。

最佳答案

试试这个

library(ggplot2)
library(scales)
library(rlang) # for sym

myfunction <- function(var1,var2){
p <- ggplot(diamonds, aes(x=cut, y= !! sym(var1)) ) +
geom_boxplot() +
scale_y_continuous(labels = get(var2))
p
return(p)
}
myfunction('price','dollar')

关于r - 如何通过 R 函数将多个参数传递给 ggplot,包括美学和比例格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com