#author("2018-07-25T21:46:30+09:00","default:Miyashita","Miyashita")
#author("2019-12-25T09:24:23+09:00","default:Miyashita","Miyashita")
*対数グラフ作成時にハマったメモ [#j4ff1bc6]
**semilogy等を使用しても対数軸にならない [#wb3a8bdc]
versionはR2016a.~
対数軸グラフを作成する際は,hold onをsemilogy等の先に書いてはいけないらしい.~
例を以下に,
#codeprettify(lang-matlab){{
% データ作成
clear; close all;
x = 1:.1:4.;
y1 = exp(x);
y2 = x.^3;
}}
-Figure1: hold onを最初に記述~

#codeprettify(lang-matlab){{
figure;
hold on;
h1 = semilogy(x,y1,'b-','LineWidth',2);
h2 = semilogy(x,y2,'m-','LineWidth',2);
hold off;
grid on;
axis square
le = legend([h1 h2],{'y = e^x','y = x^3'});
set(le,'Location','NorthWest','FontSize',14);
}}
-Figure2: hold onをsemilogyの後に~

#codeprettify(lang-matlab){{
h1 = semilogy(x,y1,'b-','LineWidth',2);
hold on
h2 = semilogy(x,y2,'m-','LineWidth',2);
hold off;
grid on;
axis square
le = legend([h1 h2],{'y = e^x','y = x^3'});
set(le,'Location','NorthWest','FontSize',14);
}}
作成された図は以下のようになる.~
&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/MATLAB/logscale_fig1.png,center,400x373);&ref(https://main-t-miyashita.ssl-lolipop.jp/hydrocoast/image/MATLAB/logscale_fig2.png,center,400x373);~
~
Figure1も
#codeprettify(lang-matlab){{
set(gca,'yscale','log')
}}
と再設定することでy軸が対数軸になる.~
最初にhold onを実行した時点で,ログスケールでない座標軸が生成されてしまうことが原因のようだ.~

確認した MATLAB のバージョンは R2016a,R2019b.~
対数軸グラフを作成する際は,hold on を semilogy 等 log スケールを指定する前に書いてしまうと log 表示が反映されないらしい.~
以下がその例.
#htmlinsert(MATLAB/test_holdon.html)

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes