x軸の情報を追加したい

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

 Respuesta aceptada

Hiroki Okawa
Hiroki Okawa el 14 de Nov. de 2019

3 votos

time = [78, 80, 82];
altitude = [94, 96, 98];
figure;
plot(time, altitude, '-o')
xlabel('時間 [sec]')
ylabel('高度 [km]')
grid on
でいかがでしょうか。 これで希望と異なる場合、どんな目的でどんなグラフを作成したいのか、を可能な範囲で教えていただけると幸いです。

6 comentarios

riku
riku el 14 de Nov. de 2019
キャプチャ.JPG
イメージとしてはこのようなx軸に情報が2つある図を作りたいと考えております。
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa el 14 de Nov. de 2019
Editada: Hiroki Okawa el 14 de Nov. de 2019
なるほど、わかりました。
時間と高度が1 : 1 対応しているのであれば
y = 0 : 2 : 8; % 仮データ
t = 78 : 2 : 86; % 時間
a = 94 : 2 : 102; % 高度
xl = (string(t') + " / " + string(a'))';
figure
plot(t, y)
xticks(t)
xticklabels(xl)
xlabel('時間 [sec] / 高度 [km]')
ylabel('移動距離 [km]')
grid on
はいかがでしょうか。
申し訳ありません。力不足で改行ができませんでした……。
riku
riku el 15 de Nov. de 2019
とんでもないです、ありがとうございます。
riku
riku el 15 de Nov. de 2019
Hiroki okawa様
plotmultixを使った例の提示ありがとうございます。
おかげさまで、もう少しのところまでできました。実は、実際に使ってるデータは高度が等倍ではなく、
t = [78 80 82 84 86]
a = [94 95 99 105 112]のようなデータであり、そのまま実装すると
sample.bmp
この図のようになり、
t = [78 80 82 84 86]
a = [94 95 99 105 112]
tとaの対応が崩れてしまい、困っています。もう少しお力添え頂けないでしょうか?
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa el 15 de Nov. de 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 el 15 de Nov. de 2019
思い描いていたものを実現することができました。
長い時間親身になって考えてくださり、本当にありがとうございました。

Iniciar sesión para comentar.

Más respuestas (1)

Yoshio
Yoshio el 14 de Nov. de 2019

1 voto

File Exchangeに参考となるものがあるようです。
いかがでしょうか。

2 comentarios

riku
riku el 15 de Nov. de 2019
Editada: riku el 15 de Nov. de 2019
plotmultix(varargin​)を使おうとしたのですが、アドオンを追加した後どのように実行すればわからず困っています。何か例題を示していただければ幸いです。
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa el 15 de Nov. de 2019
Editada: Hiroki Okawa el 15 de Nov. de 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値がない場合)する必要があります。

Iniciar sesión para comentar.

Categorías

Etiquetas

Preguntada:

el 14 de Nov. de 2019

Comentada:

el 15 de Nov. de 2019

Community Treasure Hunt

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

Start Hunting!