x軸の情報を追加したい

13 views (last 30 days)
riku
riku on 14 Nov 2019
Commented: riku on 15 Nov 2019
sample.jpg
上の図ようにx軸が時間のデータに高度の対応も分かるように高度も表示させたいのですが出来なくて困っています。
複数の x 軸と y 軸があるチャートの作成も試したのですが、これは2つのデータの同じ図に表示するものであったため、それぞれ表示させると時間と高度にずれが生じてしまいました。
よろしくお願いします。

Accepted Answer

Hiroki Okawa
Hiroki Okawa on 14 Nov 2019
time = [78, 80, 82];
altitude = [94, 96, 98];
figure;
plot(time, altitude, '-o')
xlabel('時間 [sec]')
ylabel('高度 [km]')
grid on
でいかがでしょうか。 これで希望と異なる場合、どんな目的でどんなグラフを作成したいのか、を可能な範囲で教えていただけると幸いです。
  6 Comments
Hiroki Okawa
Hiroki Okawa on 15 Nov 2019
なるほどわかりました。
あくまで 高度 は、 時間 に対応している、ということですね。(こちら側の回答に近い)
y = 0 : 2 : 8; % 移動距離
t = 78 : 2 : 86; % 時間
a = [94, 95, 99, 105, 112]; % 高度
index = 1 : length(t); % プロット用のインデックス
figure;
[~, ax] = plotmultix(t, y, index, y);
xticks(ax(2, 1), index) % 目盛りの位置はインデックスとする
xticklabels(ax(2, 1), string(a)); % 目盛り表示のみaのデータを用いる
xlabel(ax(1,1),'時間 [sec]');
xlabel(ax(2,1),'高度 [km]');
ylabel('移動距離 km]')
grid on
しかし、このままですと高度は等間隔ではないにもかかわらず、下記のように小目盛りが等間隔に表示されています。plotmultix関数はaxesの扱いが特殊なようで、小目盛りの制御に関して私の調べた限りでは見つかりませんでした。
untitled.png
riku
riku on 15 Nov 2019
思い描いていたものを実現することができました。
長い時間親身になって考えてくださり、本当にありがとうございました。

Sign in to comment.

More Answers (1)

Yoshio
Yoshio on 14 Nov 2019
File Exchangeに参考となるものがあるようです。
いかがでしょうか。
  2 Comments
riku
riku on 15 Nov 2019
Edited: riku on 15 Nov 2019
plotmultix(varargin​)を使おうとしたのですが、アドオンを追加した後どのように実行すればわからず困っています。何か例題を示していただければ幸いです。
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa on 15 Nov 2019
Edited: Hiroki Okawa on 15 Nov 2019
plotmultixを使った例を簡単ですが作りました。
y = 0 : 2 : 8; % 移動距離
t = 78 : 2 : 86; % 時間
a = 94 : 2 : 102; % 高度
figure;
[~,ax]=plotmultix(t,y,a,y);
xlabel(ax(1,1),'時間 [sec]');
xlabel(ax(2,1),'高度 [km]');
ylabel('移動距離 km]')
grid on
ただし、この関数はnanmin, nanmax関数を用いるため Financial Toolbox 或いは Statistics and Machine Learning Toolbox を持っていない場合は、自力で実装するか
271行目: nanmin → min
271行目: nanmax → max
と変更(対象データにNaN値がない場合)する必要があります。

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!