在其他 ggplot 函数中使用提供给 aes_string() 的变量
Use variables supplied to aes_string() in other ggplot functions
我在函数中使用 aes_string()
来创建一些图表。我正在使用 cowplot 进行主题化,这会将轴缩放到所提供数据的最大值,在最大值处切断点的顶部或侧面,如下例所示。
因此我想将 5% 添加到列的最大数据以添加一点 space。如果我不写一个函数,我可以做类似
的事情
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
您可以从 expand_limits
中的数据中提取 y
变量并将其缩放 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))
来绝对限制这些数字。
但正如其他人所建议的那样,如果您使用 scale_y_continuous
的 expand
参数的默认值,您会得到想要的结果。
所以 scale_y_continuous(expand = c(0, 0.1))
会给你 10% 的额外 space 从两边的 y 轴边界。文档是 here.
如果您想要更多自定义解决方案,expand_limits
方法仍然有用。
我在函数中使用 aes_string()
来创建一些图表。我正在使用 cowplot 进行主题化,这会将轴缩放到所提供数据的最大值,在最大值处切断点的顶部或侧面,如下例所示。
因此我想将 5% 添加到列的最大数据以添加一点 space。如果我不写一个函数,我可以做类似
的事情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
您可以从 expand_limits
中的数据中提取 y
变量并将其缩放 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))
来绝对限制这些数字。
但正如其他人所建议的那样,如果您使用 scale_y_continuous
的 expand
参数的默认值,您会得到想要的结果。
所以 scale_y_continuous(expand = c(0, 0.1))
会给你 10% 的额外 space 从两边的 y 轴边界。文档是 here.
如果您想要更多自定义解决方案,expand_limits
方法仍然有用。