x軸2つ、y軸1つの​グラフを作るにはどう​すればいいですか?

44 views (last 30 days)
yuya inatomi
yuya inatomi on 29 Jan 2018
Commented: yuya inatomi on 30 Jan 2018
画像のように、y=x^2のグラフの上側に1/xの目盛を表示、 というようにしたいと思っています。 どのようにすれば可能ですか?

Accepted Answer

mizuki
mizuki on 30 Jan 2018
Edited: mizuki on 30 Jan 2018
File Exchange に plotxx という関数がありますので、こちらを使うのが簡単かと思います。
このコードを使用しない場合には、 ax1 ax2 の二つの軸を重ねてみてはどうでしょうか。
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;
ax2 = axes('Position',ax1_pos,...
'XAxisLocation','top',...
'YTick', [], 'YTickLabel', {''}, ...
'XTickLabelMode', 'manual', 'XTickMode', 'manual', ...
'XTick', [0.2 0.5 1], 'XTickLabel', {'5','2','1'}, ...
'Color','none');
ここで ax2 Color プロパティを none にすることで、背景を透明にして ax1 を見えるようにしています。
上記の方法では、top にあるx軸のラベルが固定 ( XTick XTickLabel で設定) ですが、もしいろいろな 1/x を表示したい場合には、式のまま XTickLabel として定義すればよいかと思います。
% ラベルの作成
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');
  1 Comment
yuya inatomi
yuya inatomi on 30 Jan 2018
ありがとうございました!

Sign in to comment.

More Answers (0)

Products

Community Treasure Hunt

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

Start Hunting!