我有一个数据集,其中第一列是“年份”,接下来的五十列是美国每个州的数据。我想在一个 pdf 中生成多个图,将每个“州”列与“年”列相匹配(即 [1] 和 [2]、[1] 和 [3]、... [1]和[50]。
我认为循环第 2-50 列将是一个很好的解决方案,但我无法让它在绘图函数中工作。我对循环很陌生,所以我不太确定如何继续。下面是我的数据集中的示例以及我遇到问题的部分代码
testUS:
Year ME NH VT MA RI CT NY
1953 4017 1579 5057 12215 1582 9252 23507
1954 5265 1351 1733 18561 633 8402 21002
1955 740 788 2214 9719 787 3958 22317
1956 985 184 1537 6458 957 5575 26639
pdf("testUSgraph.pdf")
for (i in 2:50) {
plot(testUS[,1], testUS[,i])
}
dev.off
我收到的错误消息:
function (which = dev.cur())
{
if (which == 1)
stop("cannot shut down device 1 (the null device)")
.External(C_devoff, as.integer(which))
dev.cur()
}
<bytecode: 0x1075edc30>
<environment: namespace:grDevices>
此外,每当我将 testUS[i] 分配给变量时,该变量仅调用一种状态的数据(即仅显示第 50 列的数据)。
假设你的数据框是df
,
library(ggplot2)
col_names <- colnames(df)
col_names <- col_names[-1]
for (i in col_names){
plot <- ggplot(df, aes_string(x=df$Year, y=i)) +
geom_point()
print(plot)
}
这应该将它们作为单独的图返回。
edit:在同一视图中返回绘图,并另存为 pdf,
col_names <- colnames(df)
col_names <- col_names[-1]
plot_list <- list()
for (i in col_names){
plot <- ggplot(df, aes_string(x=df$Year, y=i)) +
geom_point()
plot_list[[i]] <- plot
}
plot_grob <- arrangeGrob(grobs=plot_list)
pdf("testUSgraph.pdf")
grid.arrange(plot_grob)
dev.off()
(在初始代码中保存 pdf 的问题可能是因为您忘记了括号,dev.off
应该dev.off()
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)