#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)