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の対応が崩れてしまい、困っています。もう少しお力添え頂けないでしょうか?
よろしくお願いします。
Hiroki Okawa
Hiroki Okawa 2019년 11월 15일
なるほどわかりました。
あくまで 高度 は、 時間 に対応している、ということですね。(こちら側の回答に近い)
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에서 座標軸の外観에 대해 자세히 알아보기

질문:

2019년 11월 14일

댓글:

2019년 11월 15일

Community Treasure Hunt

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

Start Hunting!