![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/688673/image.jpeg)
How to highlight a portion of time series on a plot?
2 ビュー (過去 30 日間)
古いコメントを表示
I have a 64 x 3600 matrix containing time series.
I have another matrix (64 x 2) that contain indices of time series that needs to be highlighted. The first row of this matrix is [1223, 1345]. Here 1223 is the starting index and 1345 is the ending index.
I want to plot all the 64 time series in which the length of time series corresponding to these indices are highlited (as shown in example below).
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/688623/image.png)
0 件のコメント
採用された回答
Scott MacKenzie
2021 年 7 月 19 日
Here's what I put together. I'm assuming you want 64 separate plots.
% test data (timeseries)
nRow = 64; % adjust as per your data
nCol = 36; % adjust as per your data
ts = timeseries(rand(nRow,nCol));
% test data (indices)
n = randi(nCol,2,nRow);
n = sort(n, 'ascend')';
f = figure;
f.Color = 'w';
f.WindowState = 'maximize';
tiledlayout('flow');
for i=1:nRow
idx1 = n(i,1);
idx2 = n(i,2);
nexttile;
plot(1:idx1,ts.Data(i,1:idx1),'k','linewidth', 1.5);
hold on;
plot(idx1:idx2,ts.Data(i,idx1:idx2),'r', 'linewidth',1.5);
plot(idx2:length(ts.Data(i,:)),ts.Data(i,idx2:end),'k','linewidth',1.5);
end
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/688673/image.jpeg)
2 件のコメント
Peter Perkins
2021 年 7 月 27 日
It sounds like maruljay had a numeric matrix, each column of which is a "time series". Scott, you've shown using a time series object. That will work, but I'd recommend using a timetable, maybe with 64 variables, maybe with one variable that itself has 64 columns. Essentially the same code, though.
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Line Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!