n個のcsvデータをグラフにして重ね合わせ、その後グラフの色を変更する方法ついて(n個のうち、1個だけ色を変えたい)
Show older comments
初歩的な質問で申し訳ありません。
現在フォルダ内のn個のcsvデータをグラフ化し、重ね合わせる事を行っております。
そのコードとしては、以下のように行っています。
(2行n列のcsvデータで、1行目のみを抜き出しております)
list = dir('*.csv');
figure
hold on
for ii = 1:length(list)
a = readmatrix(list(ii).name);
plot(a(1,:))
end
このコードだと、n個のグラフを重ねることは可能ですが、n個のグラフがそれぞれ異なる色となっております。
そこで、グラフの色を変更する場合、例えばn個全てを同じ色にする場合は、以下のようにすることで対応できました。
(全てのグラフを青にしております。)
list = dir('*.csv');
figure
hold on
for ii = 1:length(list)
a = readmatrix(list(ii).name);
plot(a(1,:),'b');
end
上記経過があるのですが、次にやりたいこととして、
●n個のグラフのうち任意の1つのグラフを色を変更することは可能でしょうか。
例:n個の青色のグラフのうち、50番目のグラフのみを赤色に変更する
●n個のグラフのうち、任意の間のグラフの色を変更することは可能でしょうか。
例:n個の青色のグラフのうち、50番目~60番目のグラフを赤色に変更する
上記のようなことは可能なのでしょうか。
ご検討頂けると幸いです。
宜しくお願い致します。
Accepted Answer
More Answers (1)
Hiroshi Iwamura
on 8 Dec 2022
Edited: Hiroshi Iwamura
on 8 Dec 2022
1 vote
plot をグラフィックオブジェクトに取っておく方法もあります。
後から属性やデータ自体も変えられます。
また、Color の4次元目を指定すると、透明度も変えられます。
th = 0:pi/20:2*pi;
y = sin(th);
alpha = 0:0.2:1;
N = length(alpha);
p = gobjects(1,N); % initialize graphic object matrix
cnt = 1;
for a = alpha
p(cnt) = plot(th, (y+a),'b');
if cnt == 1; hold on; end
cnt = cnt + 1;
end
hold off
pause
p(1).Color = [p(1).Color 0.2];
p(1).LineWidth = 2;
p(2).Color = [0.87 0 0];
p(3).LineWidth = 2;
p(end).Color = [0.87 0.5 0];
p(end).YData = p(end).YData + 0.2;
p(end).LineStyle = '--';
p(end).Marker = 'o';


よろしければこちらもご参照ください
1 Comment
cho hunseki
on 9 Dec 2022
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!
