Issue in using splitapply to plot data

4 ビュー (過去 30 日間)
vanrapa
vanrapa 2020 年 3 月 23 日
コメント済み: Star Strider 2020 年 3 月 24 日
Hi,
I have an array with 14 columns. Column 3 contains groups of numbers. I would like to plot column 1 vs. column 4 for each group of column 3. I have written the following code,
G = findgroups(val(:, 3));
splitapply(@plot, val(:, 1), val(:, 4), G);
From my data, I should be getting 6 plots within the figure. But I am getting only a single plot. So what is the issue in my code?
Also how to write legend using splitapply?
Thanks.

採用された回答

Star Strider
Star Strider 2020 年 3 月 23 日
One approach:
D = load('val.mat');
val = D.val;
G = findgroups(val(:, 3));
figure
hold on
Y = splitapply(@(x){plot(x(:,[1 4]))}, val, G);
hold off
Another approach:
D = load('val.mat');
val = D.val;
G = findgroups(val(:, 3));
Y = splitapply(@(x){x(:,[1 4])}, val, G);
figure
hold on
for k = 1:numel(Y)
plot(Y{k})
end
hold off
grid
legend(compose('Group %d', 1:6), 'Location','eastoutside')
I prefer the second approach, however it is possible to use plot with splitapply, as the first approach demonstrates.
  8 件のコメント
vanrapa
vanrapa 2020 年 3 月 24 日
Channels will be in val(;,3) and it is working. Thanks
Star Strider
Star Strider 2020 年 3 月 24 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeLegend についてさらに検索

製品


リリース

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by