x軸を上下二軸にした​いです.上のx軸は下​のx軸に対応している​ようにしたいです.

15 ビュー (過去 30 日間)
Katsuya Iwata
Katsuya Iwata 2022 年 1 月 6 日
コメント済み: Katsuya Iwata 2022 年 1 月 8 日
https://jp.mathworks.com/matlabcentral/answers/379577-x-2-y-1
こちらの回答を参考に,x軸を上下二軸にしたグラフをプロットしようとしています.
figure
x1 = 0:0.1:1;
y1 = x1.^2*25/27 + x1*5/54 - 1/54;
line(x1,y1,'Color','r')
ax1 = gca;
ax1_pos = ax1.Position;
% ラベルの作成
x_Tlabel = cell2mat(cellfun(@str2num, ax1.XTickLabel, 'UniformOutput', false));
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YTick', [], 'YTickLabel', {''}, ...
'XTickLabelMode', 'manual', 'XTickMode', 'manual', ...
'XTick', x_Tlabel(2:end), 'XTickLabel',cellstr(num2str(1./x_Tlabel(2:end))), ...
'Color','none');
回答のコードを実行した場合は,上下二軸に数値が入るグラフが作成されるのですが,
x1,y1にそれぞれデータ数(1026個)の実験で得られた値を入れると,上のx軸に数値が入らない状態になってしまいます.
ax2のx軸(上のx軸)には,x1を変数として算出した結果を載せたいです.
(具体的には,データはx1が波長,y1が光強度で,ax2のx軸には周波数(波長の逆数です)をのせたいです)
宜しくお願いします.

採用された回答

Atsushi Ueno
Atsushi Ueno 2022 年 1 月 6 日
ax2.XLim = [0 1]です。(追加したax2軸のデフォルト範囲)
ax2.XTick = x_Tlabel(2:end)の値が上記の範囲を超えていませんか?
'XTick', x_Tlabel(2:end)/x_Tlabel(end), % XTickの範囲を0~1に合わせる
もしくは
'XLim', [0 x_Tlabel(end)], % XLimの範囲を実値の範囲に合わせる
上記のいずれかを合わせれば目盛りラベルが表示されます。
  3 件のコメント
Atsushi Ueno
Atsushi Ueno 2022 年 1 月 7 日
Freqの値が何か不明ですが、負の値から正の値への単調増加なのだと思います。
その場合もう一方の端も設定してやれば意図した表示になります。ゼロがXTickLabelの端ではなくなったので、x_Tlabel(2:end)をx_Tlabel(1:end)に変更しました。したがって0に該当するラベルはInfになり表示されています。
figure(9)
x1 = -10:0.1:10;
y1 = sin(x1);
plot(x1,y1,'Color','r')
ax1 = gca;
ax1_pos = ax1.Position;
% ラベルの作成
x_Tlabel = cell2mat(cellfun(@str2num, ax1.XTickLabel, 'UniformOutput', false));
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YTick', [], 'YTickLabel', {''}, ...
'XTickLabelMode', 'manual', 'XTickMode', 'manual', 'XLim', [x_Tlabel(1) x_Tlabel(end)], ...
'XTick', x_Tlabel(1:end), 'XTickLabel',cellstr(num2str(1./x_Tlabel(1:end))), ...
'Color','none');
Katsuya Iwata
Katsuya Iwata 2022 年 1 月 8 日
ご回答ありがとうございます.
見事にできました.ご教示いただきありがとうございました.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeAnnotations についてさらに検索

製品


リリース

R2020b

Community Treasure Hunt

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

Start Hunting!