プロットをカラーマッ​プにしたがって重ね合​わせるには?

11 views (last 30 days)
Kanae
Kanae on 28 May 2024
Answered: covao on 6 Jul 2024
波形データをセル配列に格納し,波形ごとに少しずつ色を変えて描画したいです.
({1}に波形1の時系列データ,{2}に波形2の時系列データとして順に格納しています)
すべての波形プロットが完了したあとでcolororder(cool)など,所望のカラーマップを適用すると,指定のカラーマップで描画できているように見受けられるのですが,colorbarにはこの情報が反映されません.
以下のフォーラムに沿って指定しようとすると,「カラーマップに従って波形ごとに色を変える」ということ自体ができませんでした.
波形ごとに,任意のカラーマップに従って描画色を変え,そのcolorbarを横に表示するにはどのようにすればよいでしょうか?
https://jp.mathworks.com/matlabcentral/answers/1952534-

Answers (1)

covao
covao on 6 Jul 2024
ご質問のcolormapを用いて波形ごとに色を変えてプロットする例です。
(意図しているものとは異なるかもしれません。)
コードの作成に生成AIを用いています。
% Set the number of sample data
n = 10;
% Generate a cell array of waveform data (using random data as an example)
waveforms = arrayfun(@(x) rand(1, 100), 1:n, 'UniformOutput', false);
% Set colormap (select from the following)
cmap = cool(n); % Cool colormap
% cmap = hot(n); % Hot colormap
% cmap = jet(n); % Jet colormap
% cmap = parula(n); % Parula colormap
% cmap = hsv(n); % HSV colormap
% cmap = autumn(n); % Autumn colormap
% cmap = winter(n); % Winter colormap
% cmap = spring(n); % Spring colormap
% cmap = summer(n); % Summer colormap
% Set legend names
legendNames = arrayfun(@(x) sprintf('Wave %d', x), 1:n, 'UniformOutput', false);
% Plot
figure;
hold on;
for i = 1:n
plot(waveforms{i}, 'Color', cmap(i, :));
end
% Add colorbar
colormap(cmap);
c = colorbar('Ticks', linspace(0, 1, n), ...
'TickLabels', legendNames);
% Add title to the colorbar
c.Label.String = 'Waveforms';
% Set colorbar location to the right outside
set(c, 'Location', 'eastoutside')
% Set axis labels (if needed)
xlabel('Time');
ylabel('Amplitude');
title('Waveforms with Custom Colormap');
hold off;

Categories

Find more on ビッグ データの処理 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!