【发布时间】:2019-07-06 22:14:37
【问题描述】:
我创建了一个函数,其目标是以矢量化方式创建一系列图。这些函数部分完成了我想要的更新,即根据所选变量更新图。但是,我无法传递标签参数(即 label_x 和 label_y),因此 xlab 和 ylab 会持续更新。
library(tidyverse)
plot_scatter_with_label <- function(df,
var_x,
var_y,
label_x,
label_y,
geom_smooth = FALSE,
point_shape = 16,
point_color = "#EB3300",
point_size = 1,
point_alpha = 1,
smooth_method = "loess",
smooth_se = FALSE,
smooth_color = "navy") {
df <- data.frame(lapply(df, function(x) as.numeric(as.character(x))))
scatter_plot <- function(x, y) {
p <- ggplot(df, aes_string(x = x, y = y)) +
geom_point(shape = point_shape, color = point_color, size = point_size, alpha = point_alpha) +
ylab(label_y) + xlab(label_x)
p
}
map2(
var_y, label_y,
~ map(var_x, scatter_plot, y = .x)
)
}
示例
plot_scatter_with_label(
df = mtcars,
var_y = c("mpg", "hp"),
label_y = c("Miles per gallon [Mpg]", "Horse power [CV]"),
var_x = c("cyl", "gear"),
label_x = c("Cylinders [n]", "Gear [n]")
)
我期待获得以下地块:
1) mpg 与 cyl
2) mpg 与齿轮
3) 马力与气缸
4) 马力与齿轮
似乎我得到了这 4 个图,但标签没有按预期更新。它总是返回 label_x 和 label_y 中定义的第一个参数。
任何帮助将不胜感激。
最好的问候,
【问题讨论】:
-
感谢@Tung 的回复。但是,这些答案都不能帮助我弄清楚如何解决“label_x 和 label_y 传递”问题:(
-
根据我之前发布的两个链接检查我的答案