x軸の情報を追加したい

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

 采纳的回答

Hiroki Okawa
Hiroki Okawa 2019-11-14

3 个投票

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

6 个评论

riku
riku 2019-11-14
キャプチャ.JPG
イメージとしてはこのようなx軸に情報が2つある図を作りたいと考えております。
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa 2019-11-14
编辑:Hiroki Okawa 2019-11-14
なるほど、わかりました。
時間と高度が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 2019-11-15
とんでもないです、ありがとうございます。
riku
riku 2019-11-15
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の対応が崩れてしまい、困っています。もう少しお力添え頂けないでしょうか?
よろしくお願いします。
なるほどわかりました。
あくまで 高度 は、 時間 に対応している、ということですね。(こちら側の回答に近い)
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 2019-11-15
思い描いていたものを実現することができました。
長い時間親身になって考えてくださり、本当にありがとうございました。

请先登录,再进行评论。

更多回答(1 个)

Yoshio
Yoshio 2019-11-14

1 个投票

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

2 个评论

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

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

Community Treasure Hunt

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

Start Hunting!