我喜欢绘制简单的时间序列数据和过度降水数据。以下代码绘制了通常数据的一行,并为降水数据添加了条形图(或直方图条)。
D # a simple (zoo) time series
P # a simple (zoo) time series of precipitation
plot(D, type="l")
lines(P, type="h", lwd=5)
但是这些条形基于y = 0轴并且向上上升。但通常在水文学中的是基于顶部轴线和向下“流动”的降水条。 D
具有任意y范围,因此我更倾向于为P
的基线确定值的解决方案。
我google了很多但是没有设法在没有ggplot的R中找到如何做到这一点,也没有额外的包如水位线。
答案 0 :(得分:3)
不确定我是否理解正确,这是我的解释。
不知道这是否适用于zoo
个对象。
# Create some mock data
x<-runif(20,0,100)
y<-runif(20,0,100)
# This is the normal topwards plot
plot(x,y,type="h")
# And this is the downwards plot
plot(x, y, ylim = rev(range(y)),type="h")
答案 1 :(得分:2)
在BlankUsername的帮助下,我找到了zoo
时间序列的以下解决方案。我之前没有注意到par(new=T)
或axis()
命令:
# plot the usual data
plot(D)
# add half day to indicate that P is a sum of the whole day
index(P) <- index(P) + 0.5
# define an overlay plot without border
par(bty="n", new=T)
plot(P, type="h", ylim=rev(range(P)), # downward bars by BlankUsername
yaxt="n", xaxt="n", ann=F, # do not plot x and y axis
xlim=c(start(D),end(D)), # without xlim the two overlayed plots will not fit
lwd=10, col=rgb(0,0,0,0.1) ) # suggested cosmetics
# add right axis (4) to describe P
axis(4, pretty(range(P)), col.axis="grey", col="grey", las=1, cex.axis=0.7 )
# reset border and overlay
par(bty="o", new=F)