0

aes_string()在一个函数中使用来创建一些图表。我正在使用 cowplot 进行主题化,这会将轴缩放到所提供数据的最大值,并在最大值处切断点的顶部或侧面,如下例所示。

因此,我想为该列的最大数据添加 5% 以增加一点空间。如果我不写函数,我可以做类似的事情

scale_y_continuous(expand = c(0,0), 
                       limits = c(0, max(y_var) *  1.05))

但是,我不知道如何使用aes_string(). 谁能解释如何做到这一点aes_string()

library(cowplot)
library(ggplot2)

fig_fun <- function(data, var){
  ggplot(data, aes_string(x = "wt", y = var)) + 
    geom_line() + 
    geom_point() +
    scale_y_continuous(expand = c(0,0), 
                       limits = c(0, NA))
}

data("mtcars")
p <- fig_fun(data = mtcars, var = "mpg")
p

当前问题

4

1 回答 1

2

您可以从内部数据中提取y变量expand_limits并将其缩放 5%:

expand_limits(y = c(0, max(data[, var])*1.05))

这使得:

fig_fun <- function(data, var){
  ggplot(data, aes_string(x = "wt", y = var)) + 
    geom_line() + 
    geom_point() +
    expand_limits(y = c(0,max(data[, var])*1.05))) # picking the var column here
}

您将需要一个额外+ scale_y_continuous(expand = c(0, 0))的绝对限制这些数字。

但正如其他人所建议的那样,如果您使用expand参数的默认值,scale_y_continuous您将得到您想要的。因此scale_y_continuous(expand = c(0, 0.1)),从两侧的 y 轴边界可以为您提供 10% 的额外空间。文档在这里

如果您需要更多自定义解决方案,该expand_limits方法仍然有用。

于 2017-02-23T11:41:57.983 回答