我是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")))
}
我希望你能帮助我。非常感谢
答案 0 :(得分:5)
我们可以使用 data.table 包来保持我们的重塑为一步,因为它允许我们指定度量列的模式。
首先,我们为每个观察创建一个ID:
dat$ID <- 1:nrow(dat)
然后我们以长格式创建数据。这是ggplot的最佳格式:每个观察点(或点)都有自己的行。
library(data.table)
dat_m <- melt(setDT(dat),measure=patterns(c("^x","^y")),value.name=c("x","y"))
绘图很简单:
p <- ggplot(dat_m, aes(x=x,y=y,group=ID)) +
geom_polygon()
p
使用的数据:
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")
答案 1 :(得分:1)
您的代码正在为每个循环创建一个新的ggplot()。你想要的是将plot命令分成多个步骤。首先在for循环外设置p = ggplot()
,然后在for循环内添加多边形:p = p + geom_polygon(...)
。在for循环结束后,调用print(p)
以查看结果。