【发布时间】:2019-10-08 01:53:22
【问题描述】:
我正在尝试使用两个 Y 变量绘制 34 个单独的图与时间的关系。我的数据集是结构化的: X Y1A Y2A Y1B Y2B 。 . . Y1n Y2n
我可以通过简单地要求 ggplot 绘制我想要的列来单独绘制。但是,我在 5 个数据集中的每个数据集中都有 34 个绘图要做,因此自动化这将很有用。我真的很困惑如何构建语言来做我想做的事情。 (新用户)。我不擅长 for 循环,甚至不知道这是否正是我想要使用的正确代码结构。我查看了 apply 函数,但这些函数似乎并没有做我想做的事情,因为我不想操纵我的数据,而只是一次绘制所有数据。
我还没有尝试过melt,但我再次被困在如何一次创建两条线。我是否应该将我的列命名为不同的/更易于自动化的名称。
我已经搜索了几个小时,但没有找到任何可以完全回答我的问题的东西。
df <- matrix( c( 1, 0.011, 0.002, 0.007, 0.002,
2, 0.011, NA, 0.007, NA,
3, 0.010, 0.002, 0.007, 0.002,
4, 0.010, NA, 0.007, NA,
5, 0.010, NA, 0.006, NA,
6, 0.010, 0.002, 0.006, 0.002
), nrow = 6, ncol= 5, byrow= TRUE)
colnames(df)<- c("time", "prefish1", "obsfish1", "prefish2", "obsfish2")
biomass<-as.data.frame(df)
for (i in biomass[2]) {
}
for (k in biomass[3]) {
}
} ##this will call just columns 2 and 3 as a pair.##
ggplot(biomass, aes(x= time)) +
geom_line(aes(y=i)) +
geom_point(aes(y=k)) +
ggtitle(i) + ylab("biomass t/km2") +
##I would also like to title them using the header one of the column pairs##
theme_classic()
编辑 我刚试过这个:
pre<- biomass[+c(2,4)]
obs<- biomass[+c(3,5)]
for(i in 1:NCOL(pre)){
}
for(k in 1:NCOL(obs)){
plot(biomass$time, pre[,i], type= "l", xlab= "time", ylab ="biomass t/km2")
par(new= TRUE)
plot(biomass$time, obs[,k], type = "p", main = paste("Fit", names(obs)[k]), xlab= "time", ylab ="biomass t/km2")
}
但是这里出了点问题,我希望每一对的点和线都在同一个图上。
预期结果应该是 34 个单独的地块。 - 或者在这个例子中,两个单独的图。
【问题讨论】:
-
请使用
dput(your_data)添加可重现的数据示例。