两个时间序列图以及它们之间的阴影...MATLAB

发布于 2024-12-03 11:43:41 字数 408 浏览 2 评论 0原文

我正在使用 MATLAB 绘制时间序列的两条线...(最小线和最大线)

我的点会聚在数据末尾的一个点上。

我试图填充线条之间的区域,然后在阴影区域的顶部绘制其他线条。

这是我的问题:

当我使用“fill”时,它完全按照我想要的方式执行...但它从数据的最后一个点画一条线回到初始数据点。我该如何摆脱它?

这是我的两个示例的非常模糊的草图:

image

image2

图表下方的线就是我所说的...

有什么想法可以避免这种情况吗?

谢谢!

I am using MATLAB to plot two lines of a time series... (a min and max line)

I have the points converging at a single point at the end of the data.

I am trying to fill the area in between the lines and then plot other lines on top of the shaded area.

Here is my problem:

When I use "fill" it does exactly what I want it to do...but it draws a line from the last point of the data back to the initial data point. How do I get rid of it?

Here is a very vague sketch of my 2 examples:

image

image2

The line below the graph is what I am talking about...

Any ideas how to avoid that?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

耳根太软 2024-12-10 11:43:41

来创建填充

fill([xData1;xData2],[yData1;yData2])

我猜您使用其中 xData1 是第一条曲线的 x 数据的 n×1 数组 。这将导致形状奇怪的多边形,因为多边形的“角”没有正确排序。

相反,您应该这样做

fill([xData1;xData2(end:-1:1)],[yData1;yData2(end:-1:1])

,即翻转两个数据集之一的顺序。

I guess that you create the fill with

fill([xData1;xData2],[yData1;yData2])

where xData1 is a n-by-1 array of x-data for your first curve. This will lead to a weirdly-shaped polygon because the 'corners' of the polygon are not properly ordered.

Instead, you should do

fill([xData1;xData2(end:-1:1)],[yData1;yData2(end:-1:1])

i.e. flip the order of one of the two data sets.

彼岸花似海 2024-12-10 11:43:41

正如@Jonas 所解释的(比我更早),您需要正确排序两个时间序列的数据。让我添加一个示例:

%# first series
x1 = linspace(pi/4, 5*pi/4, 100);
y1 = cos(x1);

%# second series
x2 = linspace(pi/4, 5*pi/4, 100);
y2 = sin(x2);

subplot(121), fill([x1 x2], [y1 y2], 'r')
subplot(122), fill([x1 fliplr(x2)], [y1 fliplr(y2)], 'r')
hold on
plot(x1,y1, 'Color','b', 'LineWidth',3)
plot(x2,y2, 'Color','g', 'LineWidth',3)

在此处输入图像描述

As @Jonas explained (beat me to it), you need to properly order the data of the two time-series. Let me add an example to that:

%# first series
x1 = linspace(pi/4, 5*pi/4, 100);
y1 = cos(x1);

%# second series
x2 = linspace(pi/4, 5*pi/4, 100);
y2 = sin(x2);

subplot(121), fill([x1 x2], [y1 y2], 'r')
subplot(122), fill([x1 fliplr(x2)], [y1 fliplr(y2)], 'r')
hold on
plot(x1,y1, 'Color','b', 'LineWidth',3)
plot(x2,y2, 'Color','g', 'LineWidth',3)

enter image description here

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文