R中的多边形函数在第一个点和最后一个点之间创建一条线

R中的多边形函数在第一个点和最后一个点之间创建一条线,r,plot,time-series,polygon,R,Plot,Time Series,Polygon,我有一个时间序列,我想用多边形函数来绘制,因为我想在不同的时间序列之间创建一个阴影。但是,当调用polygon()时,该函数会在第一个点和最后一个点之间添加一条线(实际上,它会连接第一个点和最后一个点以完成绘图)。我想知道如何告诉R不要加入这两个组织。已经发布了一些稍微相关的问题(),但解决方案没有帮助。任何帮助都将不胜感激 我已经尝试过几种方法,比如像下面的部分那样重新排序数据 %ts_lb_vec是我的向量格式时间序列 %x是时间向量(2000年至2015年) %我首先调用plot,它用y(

我有一个时间序列,我想用多边形函数来绘制,因为我想在不同的时间序列之间创建一个阴影。但是,当调用
polygon()
时,该函数会在第一个点和最后一个点之间添加一条线(实际上,它会连接第一个点和最后一个点以完成绘图)。我想知道如何告诉R不要加入这两个组织。已经发布了一些稍微相关的问题(),但解决方案没有帮助。任何帮助都将不胜感激

我已经尝试过几种方法,比如像下面的部分那样重新排序数据

%ts_lb_vec是我的向量格式时间序列

%x是时间向量(2000年至2015年)

%我首先调用plot,它用y(时间序列)绘制x(时间)。这很好用

plot(x, ts_lb_vec,type='n',ylim=c(-300,300), ylab="", xlab="")
但是,如果我想使用多边形函数来使用着色功能,它会画出一条线,并且我已经尝试对数据重新排序(如下所示),试图消除问题,但这是不成功的

polygon(x[order(x),ts_lb_vec[order(x)], xlim=range(x), ylim=range(ts_lb_vec))
我只想在调用多边形函数时使用R来不连接我的第一个点和最后一个点(见图)。下图所附的波纹管使用以下代码生成:

plot(x, ts_lb_vec,type='n', ylab="", xlab="")
polygon(x, ts_lb_vec)


我只是想澄清一下,我想填充两个时间序列之间的空间,因此我需要函数多边形。参见下图

我使用
ggplot2
组合了一个解决方案

关键步骤是绘制一个单独的多边形,其中一条曲线的顺序颠倒,以避免交叉回到起点

# simple example data
examp.df <- data.frame(time = seq_len(15), a  = c(1,2,3,4,5,5,5,4,3,2,4,5,6,7,8), b = c(2,4,5,6,7,8,7,6,6,5,6,4,3,2,1))

# the polygon is generated by inverting the curve b
polygon <- data.frame(time <- c(examp.df$time, rev(examp.df$time)), y.pos = c(examp.df$a, rev(examp.df$b)))

ggplot(examp.df) + 
  geom_polygon(data = polygon, aes(x = time, y = y.pos), fill = "blue", alpha = 0.25) + 
  geom_line(aes(x= time, y = a), size = 1, color = "red") + 
  geom_line(aes(x = time, y = b), size = 1, color = "green") + 
  theme_classic()
#简单示例数据

df端点必须连接,否则它就不是一个真正的多边形,也无法确定应该对哪个区域进行着色。你必须决定如何连接两端。好的,这是有道理的,但我希望一个timeseries和另一个timeseries之间的空间充满阴影。我在问题中附上了第二张图片来澄清。谢谢