我正在寻找一种方法来在基础R中生成不同的图,并手动将点和线添加到图中。
xy <- data.frame(NAME=c("NAME1","NAME1","NAME2","NAME2"), X_START_YEAR=c(1984,1986,1899,1903), Y_START_VALUE=c(75,25,-90,-8),X_END_YEAR=c(1986,1994,1909,1924),Y_END_VALUE=c(20,50,-15,-70))
xy
NAME X_START_YEAR Y_START_VALUE X_END_YEAR Y_END_VALUE
1 NAME1 1984 75 1986 20
2 NAME1 1986 25 1994 50
3 NAME2 1899 -90 1909 -15
4 NAME2 1903 -8 1924 -70
是否可以将points()
添加到包含第一行(STARTING POINT X_START_YEAR/Y_START VALUE
到END POINT:X_END_YEAR/Y_END_VALUE
)的值的绘图中,然后在同一绘图中再次绘制相同的方案第二行的值。
在生成此图之后,由NAME
定义的新组开始,并且应在与上述相同的方案中为第3行和第4行生成新图。
与此示例数据不同,我最终有大约40000行和1300个组,我正在寻找一种方法在基础R中正确绘制这些数据。感谢任何帮助!
答案 0 :(得分:0)
您可以按名称拆分数据,并按照以下方式绘制每个组:
layout(matrix(c(1,2))) ## don't use layout in your case
for (dat in split(xy,xy$NAME)){
xx = unlist(dat[,grep('X_',colnames(dat))])
yy = unlist(dat[,grep('Y_',colnames(dat))])
plot(xx,yy,main=unique(dat[,1]),pch=20)
dat <- dat[,-1]
segments(dat[,1],dat[,2],dat[,3],dat[,4])
}
这将导致每个组的情节。当然,如果将结果保存到控制台之外的其他内容,则应该定义设备之前的位置。