どのようにしてX軸を Y=0 上へ表示しますか?

18 views (last 30 days)
MathWorks Support Team
MathWorks Support Team on 25 Mar 2016
どのようにしてX軸を Y=0 上へ表示しますか?
X軸における TickLabel や Xlabel 等を 軸の下部や上部ではなく、常にY=0 上に表示したいのですが、どのようにして表示することができますか?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 25 Mar 2016
この機能は、MATLAB 8.6(R2015b) にて追加されています。
Axes の XAxisLocation プロパティ、および YAxisLocation プロパティにて座標軸の表示を原点中心に行うことが可能です。
MATLAB 8.5(R2015a) 以前のバージョンをご使用の場合、以下の対応方法で問題を回避できる場合があります。
MATLAB グラフィックスにおけるビルトイン機能としては、提供しておりませんので、サイズの小さいダミーの2軸目を既存の1軸目の上に上書きするようにしてプログラミング頂く必要があります。
Step.1. 1軸目(既存の軸)の Position (Size) を取得 
Step.2. X軸Tickラベル、および X軸ラベルをグラフ内に表示するためのダミーの軸を作成 
2-1. Y = 0 となる位置に X軸を配置するように、ダミー軸の Position (Size) の計算 
2-2. 2-1 の情報を取り入れて、ダミーの 2軸目を作成 , 軸の 背景色 (Color) は none とする
Step.3. 1軸目と2軸目の X軸のリンク作業を行う (linkaxes関数利用) 
-> グラフの拡大縮小を実施した際、x軸が連動します 
Step.4. ダミーの2軸目に xlable を追加 
Step.5. 1軸目の X軸 Tick ラベルを削除 
一例となりますが、下記にて、実現例を紹介します。 
%%%BEGIN CODE%%% 
clear all, close all 
% グラフ表示 
plot([10:5:35], [-150:50:100],'o') 
xlim([0 40]),grid on 
ax1 = gca; % カレント軸のハンドルを取得 
pos = get(ax1,'Position'); % 軸の位置(Position)を取得 
lb_y = ylabel('Magnitude') % Yラベル表示 
yl = get(ax1,'YLim'); % Y軸の最大、最小値を取得 
% Y軸の ゼロ点 の位置(axis)を取得 
y0 = interp1( [yl(1),yl(2)], [pos(2) , pos(2)+pos(4)], 0 ); 
% ダミーの軸の表示レンジを計算 (1軸目の y=0 のラインに xラベルを表示させるため) 
pos(4) = pos(4) -(y0 - pos(2)); 
pos(2) = y0; 
% ダミーの軸 (2軸目) を表示 
ax2 = axes('Position',pos,'Color','none','YTick',{}); 
% 2つの軸をリンクさせる (x軸のみ) 
linkaxes([ax1,ax2],'x'); 
% 2軸目に xラベル表示 
lab = xlabel('Temperature');
% 1軸目 の XTick Label を削除する 
set(ax1,'XTicklabel',{}) 
%%%END CODE%%% 

More Answers (0)

Tags

No tags entered yet.

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!