[英]Adding individual titles from a vector to each R plots
var_names <- c("mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb")
plotter <- function(x, var){
plot(density(x[[var]]),
main = var,
xlab = "",
ylab = "")
}
par(mfrow=c(4,3),mar=c(2.1,2.1,2.1,1))
for(vn in var_names) plotter(mtcars, vn)
不鼓励for
循环,因为它们很慢。 然而,与绘图结合使用,这本身很慢,或者如果循环只运行了 11 次,就像在这个例子中一样, for
循环非常好并且适合初学者。
如果您真的需要绘图仪的 apply-family 函数只有一个参数,则可以执行以下操作:
var_names <- c("mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb")
plotter <- function(x){
plot(density(x[[1]]),
main = names(x),
xlab = "",
ylab = "")
}
par(mfrow=c(4,3),mar=c(2.1,2.1,2.1,1))
sapply(1:11,function(n) plotter(mtcars[n]))
我建议使用ggplot2
和您拥有的名称向量的tidyverse
方法。 您可以将数据格式化为更长的格式,然后过滤所需的变量。 使用 facets 和geom_density()
可以避免标题问题。 这里的代码:
library(tidyverse)
#Vector
var_names <- c("mpg","cyl","disp","hp","drat","wt","qsec","vs","am","gear","carb")
#Data
mtcars %>% pivot_longer(cols = everything()) %>%
filter(name %in% var_names) %>%
ggplot(aes(x=value))+
geom_density()+
facet_wrap(.~name,scales = 'free')+
theme_bw()
输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.