Lil*_*ian 1 loops for-loop r ggplot2
我是R编程的新手,我想在一个图表中绘制多个三角形.当我将ggplot命令放在for循环中时,它只会重置图表查看器.但我想同时在一个图中看到所有图.这是我一直在研究的代码.
data<-read.csv("test.csv",sep=",",header=TRUE)
library("ggplot2")
for(i in 1:5){
D=data.frame(x=c(data$x1[i],data$x2[i],data$x3[i]),
y=c(data$y1[i],data$y2[i],data$y3[i]))
print(ggplot()+
(geom_polygon(data=D, mapping=aes(x=x,y=y),col="blue")))
}
Run Code Online (Sandbox Code Playgroud)
我希望你能帮助我.非常感谢
我们可以使用data.table包来保持我们的重塑一步,因为它允许我们为measure-columns指定模式.
首先,我们为每个观察创建一个ID:
dat$ID <- 1:nrow(dat)
Run Code Online (Sandbox Code Playgroud)
然后我们以长格式创建数据.这是ggplot的最佳格式:每个观察(或点)在它自己的行上.
library(data.table)
dat_m <- melt(setDT(dat),measure=patterns(c("^x","^y")),value.name=c("x","y"))
Run Code Online (Sandbox Code Playgroud)
绘图很简单:
p <- ggplot(dat_m, aes(x=x,y=y,group=ID)) +
geom_polygon()
p
Run Code Online (Sandbox Code Playgroud)
使用的数据:
dat <- structure(list(x1 = c(1, 3, 5), x2 = c(2, 4, 6), x3 = c(1, 3,
5), y1 = c(1, 1, 1), y2 = c(1, 1, 1), y3 = c(2, 2, 2)), .Names = c("x1",
"x2", "x3", "y1", "y2", "y3"), row.names = c(NA, -3L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)