どのようにしてX軸を Y=0 上へ表示しますか?
18 ビュー (過去 30 日間)
古いコメントを表示
MathWorks Support Team
2016 年 3 月 25 日
回答済み: MathWorks Support Team
2016 年 3 月 25 日
どのようにしてX軸を Y=0 上へ表示しますか?
X軸における TickLabel や Xlabel 等を 軸の下部や上部ではなく、常にY=0 上に表示したいのですが、どのようにして表示することができますか?
採用された回答
MathWorks Support Team
2016 年 3 月 25 日
この機能は、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%%%
0 件のコメント
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!