csvデータをグラフ​化し、その後のグラフ​のY軸の単位を変更す​る方法について

19 views (last 30 days)
cho hunseki
cho hunseki on 15 Dec 2022
Commented: cho hunseki on 16 Dec 2022
分からず困っており、ご教授頂ければ幸いです。
現在複数のcsvデータをグラフ化し、それを重ね合わせることをしております。
重ね合わせを行い、なおかつそれらを同じ色のグラフで表示しております。
以下コードです。(2行n列のcsvデータで、1行目を抜き出しております)
list = dir('*.csv');
figure
hold on
for ii = 1:length(list)
a = readmatrix(list(ii).name);
plot(a(1,:),'b');
上記コードで添付画像のようなグラフを作成しました。
2つご教授頂きたい点があります。
●1点目
・グラフのY軸の単位が2.5×10(-4)(10のマイナス4乗)となっておりますが、
もともとはこのデータは”μV”が単位であり、もとデータと照らし合わせると、グラフは"V"で再現されております。
グラフのプロパティインスペクターを見てみたのですが、単位の変更が分かりませんでした。
2.5×10(2)(10の2乗)などのように変更は出来るのでしょうか
●2点目
・今回重ね合わせたグラフを全て青色にしております。
例えば、1000μV以下のものは赤などと、Y軸の値によって色分けを行うことは可能でしょうか。
上記をご教授頂ければ幸いです。
宜しくお願い致します。

Accepted Answer

交感神経優位なあかべぇ
・1点目
plotは単位を持っていません。そのため、readmatrixで取得したデータを10^6倍するしか手はないかと思います。
・2点目
Y軸の値が全て1000μV以下ならば全体の線を赤にするなどの条件判定は可能です。
A = sin(linspace(0,3*pi,20)) .* 1e-9 + [0; 1e-9; 5e-9]; %テキトーにプロットするデータ作成(μV)
figure;
hold on;
for idx = 1 : size(A, 1)
microV = A(idx, :);
V = microV .* 1e6; % μVからVへ変換
if all(V <= 0.001) % Vの値全てが1000μV以下であるか判定
color = 'red';
else
color = 'blue';
end
plot(V, color);
end
  2 Comments
Hernia Baby
Hernia Baby on 15 Dec 2022
ちなみにLineのプロパティを使うともう少しコンパクトになります
A = sin(linspace(0,3*pi,20))'.* 1e-9 + [0 1e-9 5e-9];
num = find(min(A) > 0)
num = 1×2
2 3
% 今回は最小値が0より上のものを赤色に変更
c = plot(A,'b');
for ii = num
c(ii).Color ='r';
end
cho hunseki
cho hunseki on 16 Dec 2022
Hernia Babyさん
いつも質問にご回答頂きありがとうございます。
値によっての色分けですが、最大値、最小値の検出を加えることにより、
グラフをより正確に検出することができました!
ありがとうございました!

Sign in to comment.

More Answers (1)

cho hunseki
cho hunseki on 16 Dec 2022
交感神経優位なあかべぇさん
前回に引き続きありがとうございます。
Y軸の単位変更、および値によっての色分けが出来ました。
ありがとうございました。

Categories

Find more on 2 次元および 3 次元プロット 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!