我有一個data.frame xy
,我正在繪製像下面的代碼。R:固定的x軸縮放和轉換圖()xy參數到點()
有沒有一種方法,我可以怎樣我xx
和在xy走向(yy
)轉換爲points()
命令,這樣我可以設置type='n'
並添加points()
段,以便命令來控制它更完善?
xy <- data.frame(NAME=c("NAME1","NAME1","NAME1","NAME2","NAME2","NAME2"),ID=c(87,87,87,199,199,199), X_START_YEAR=c(1984,1986,1984,1899,1909,1924),Y_START_VALUE=c(75,25,-90,-8,-55,-10),X_END_YEAR=c(1986,1994,1999,1909,1924,1927), Y_END_VALUE=c(20,50,-15,-70,-80,-100))
xy
NAME ID X_START_YEAR Y_START_VALUE X_END_YEAR Y_END_VALUE
1 NAME1 87 1984 75 1986 20
2 NAME1 87 1986 25 1994 50
3 NAME1 87 1984 -90 1999 -15
4 NAME2 199 1899 -8 1909 -70
5 NAME2 199 1909 -55 1924 -80
6 NAME2 199 1924 -10 1927 -100
ind <- split(xy,xy$ID)
for (x in ind){
xx = unlist(x[,grep('X_',colnames(x))])
yy = unlist(x[,grep('Y_',colnames(x))])
fname <- paste0(x[1, 'ID'], '.png')
png(fname, width=1679, height=1165, res=150)
par(mar=c(6,8,6,5))
plot(xx,
yy,
main=unique(x[,1]),
xlab="Time [Years]",
ylab="Value [m]")
axis(1, at = seq(1000, 2050, 5), cex.axis=1, labels=FALSE, tcl=-0.3)
axis(2, at = seq(-100000, 100000, 500), cex.axis=1, labels=FALSE, tcl=-0.3)
x <- x[,-1]
segments(x[,2],x[,3],x[,4],x[,5],lwd=2)
dev.off()
}
如果有可能這將是巨大的,如果x軸可以是在一個固定的範圍內(例如2040至14年),如果1940年之前的值是存在於x軸應該是自動的。 y軸的範圍始終不同。我怎樣才能將其納入我的代碼?
感謝您的回答!這是做我想做的,完美!一個小細節我遇到了問題,也許你有一個解決方案:我想用'pch = 21'和'bg ='white''來繪製點,從而產生一個帶有黑邊的白色圓點。然而,現在繪製的點被稱爲第一個,然後段被繪製在點上。這看起來不如在具有黑色邊緣的白色點繪製在線段上時更好。這就是爲什麼我最初正在尋找一個帶有「()」的解決方案,以便我可以定義要繪製的特徵的順序... – kurdtc 2014-09-22 14:12:22
我添加了帶點的行......我希望它適用於您。 – 2014-09-22 14:57:03
謝謝!沒有看到它是如此容易納入。你幫了我很多! – kurdtc 2014-09-22 15:04:52