我无法确定您要显示的内容。据我所知,您的数据集有 50 个浮标,每个浮标每天都会进行一次测量。
library(ggplot2)
elnino <- read.table('elnino.txt', col.names=c('buoy','day','latitude','longitude','zon.winds','mer.winds','humidity','air.temp','ss.temp'), as.is=TRUE, na='.')
elnino <- elnino[elnino$humidity > 40,] # removing a single point that seems to be an outlier.
ggplot(elnino, aes(x=day,y=humidity, group=buoy)) + geom_point()
ggplot(elnino, aes(x=day,y=humidity, group=buoy)) + geom_line()
这给出了这两个结果。
我看不到的是你想如何显示 ''zon.winds'' 和 ''mer.winds'' 变量?我认为这些组合给出了一个向量,但是你想把它们放在哪里?你会得到大约 700 个箭头填充你的情节。
更新
在这种情况下,您做对了,您必须使用 geom_segment 并计算 ''x''、''xend''、''y'' 和 ''yend'',请参阅geom_segment。
# We select a single buoy
el <- subset(elnino, buoy==1)
library(grid)
ggplot(el, aes(x=day,y=humidity, group=buoy)) + geom_line() + geom_segment(aes(yend=humidity+zon.winds, xend=day+mer.winds), arrow = arrow(length = unit(0.1,"cm")))
然而,这看起来不太好,因为 ''zon.winds'' 和 ''mer.winds'' 中的坐标被视为绝对坐标!因此,要使用它们,我们需要对它们进行一些手动转换。我的价值观是绝对任意的。
el <- transform(el, zon.winds = zon.winds * -0.3, mer.winds=mer.winds * -0.3)