我正在想象一个4维数据集。
我们将变量表示为x, y1, y2
和y3
,其中x
表示日期,y
是连续变量,y2, y3
是2维向量(y2, y3)
的组成部分1}}。现在我想要x
和y1
的线图,另外在点(y2, y3)
附加(x, y1)
的箭头。
我试过了
ggplot(data=data,aes(x=x,y=y1)) + geom_line() +
geom_segment(aes(xend=x+y2,yend=y1+y3), arrow = arrow())
但它不能很好地工作,所以我想我可能需要做一些重新调整。如何使用ggplot
?
更新:我附上了sample data set(及其column definition)。该数据集包含从整个赤道太平洋的一系列浮标中获取的海洋学和地面气象数据。预计这些数据有助于理解和预测厄尔尼诺/南方涛动(ENSO)周期(来自repository的描述)。现在,例如,我想用上述符号可视化x=day, y1=humidity, y2=zon.winds, y3=mer.winds
。
UPDATE2 :例如,我想为特定的浮标绘制此图
答案 0 :(得分:2)
我无法确定您想要显示的内容。 据我所知,您的数据集有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。< / p>
# 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)