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

18 ビュー (過去 30 日間)
cho hunseki
cho hunseki 2022 年 12 月 15 日
コメント済み: cho hunseki 2022 年 12 月 16 日
分からず困っており、ご教授頂ければ幸いです。
現在複数の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軸の値によって色分けを行うことは可能でしょうか。
上記をご教授頂ければ幸いです。
宜しくお願い致します。

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2022 年 12 月 15 日
・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 件のコメント
Hernia Baby
Hernia Baby 2022 年 12 月 15 日
ちなみに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 2022 年 12 月 16 日
Hernia Babyさん
いつも質問にご回答頂きありがとうございます。
値によっての色分けですが、最大値、最小値の検出を加えることにより、
グラフをより正確に検出することができました!
ありがとうございました!

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

その他の回答 (1 件)

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

カテゴリ

Help Center および File Exchange2 次元および 3 次元プロット についてさらに検索

Community Treasure Hunt

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

Start Hunting!