MATLABの記述子グラフィックス:2番目の水平軸

MATLABで記述子グラフィックスを調べると、ユーザーフレンドリーな機能が不足していました。つまり、追加の水平軸を追加できる標準コマンドが不足していました。



plotyyコマンドによる追加の垂直軸の追加ヘルプで提供されます。トピックセクションでは、追加のx軸を追加する例がありますが、この例はコマンド自体と同様に欠点がないわけではありません。
plotyyは推奨されません


チーム自体の欠点の分析はおそらく省略されますが、開発者によって示された例の欠点は言及する価値があります。





ヘルプからのコード
figure x1 = 0:0.1:40; y1 = 4.*cos(x1)./(x1+2); line(x1,y1,'Color','r') title(' ') %   ax1 = gca; % current axes ax1.XColor = 'r'; ax1.YColor = 'r'; ax1_pos = ax1.Position; % position of first axes ax2 = axes('Position',ax1_pos,... 'XAxisLocation','top',... 'YAxisLocation','right',... 'Color','none'); x2 = 1:0.2:20; y2 = x2.^2./x2.^3; line(x2,y2,'Parent',ax2,'Color','k') xlabel('f,') %  
      
      







ヘルプから例を視覚化する
画像



上記の問題を解決するには、コードを記述します。



問題解決
 clc clear all close all %%  ,   U=[5.5 5.5 5.5 5.2 5.1 5 5 4.8 4.8]; %   F=[30 40 50 10000 12000 14000 16000 18000 20000]; %   [xi,ni]=find(F==50); K=U/U(ni); %     %% figure %%     ,     set(0,'DefaultAxesFontSize',20,'DefaultAxesFontName','Times New Roman'); set(0,'DefaultTextFontSize',20,'DefaultTextFontName','Times New Roman'); %% ,     ax=get(axes,'Position'); %         a=gca; %     set(a,'Position',[ax(1) ax(2)+(ax(2)/2) ax(3) ax(4)-ax(4)/10]) %    plot(a,log(F),K,'-o'); %    xlim(a,[min(log(F)) max(log(F))]) %     grid on %  BX=get(gca,'XTick'); %     x     BY=get(gca,'YTick'); %     y     %%      xlabel('','Position',[BX(size(BX,2))+1.1 BY(1)+(BY(1)/100)]) ylabel('K(f)') %%       F1=num2str(F,'%0.0i\n'); %          ax2=[ax(1) ax(2)-(ax(2)/4) ax(3) 0]; %      b=axes('Position',ax2); %   xlabel('f, ', 'Position',[BX(size(BX,2))+1.1 BY(1)+(BY(1)/100)]) %    xlim(b,[min(log(F)) max(log(F))]) %    ,   xticks(b,log(F)) %    xticklabels(b,F1) %    xtickangle(90) %    ,   
      
      







いくつかのコード要素を詳しく見てみましょう。



以下のコマンドを使用して、数値配列の形式で軸の位置を取得します。



 ax=get(axes,'Position');
      
      





ax配列は[abcd]として表されます。ここで、aとbはそれぞれグラフの左下隅の位置で、水平方向と垂直方向です。 つまり、原点の座標。 cは水平軸の長さ、dは垂直軸の長さです。



バイアスを導入すると、ゴールデンセクションは計算されず、すべてが「目で」見えます。



 set(a,'Position',[ax(1) ax(2)+(ax(2)/2) ax(3) ax(4)-ax(4)/10])
      
      





したがって、ax(2)+(ax(2)/ 2)-標準軸の先頭を現在の半分に垂直に、つまり元の位置からシフトします。これは、スケール上の番号付きマークを読みやすくするために必要です。 オフセットax(4)-ax(4)/ 10は、最初の軸のサイズを垂直方向に設定します。 現在の値の10分の1だけ減少します。チャートの署名を読みやすくするために必要です。 d = 0に設定すると、垂直軸は単に表示されなくなり、次の場合に使用します。



 ax2=[ax(1) ax(2)-(ax(2)/4) ax(3) 0];
      
      





次のコードを使用すると、水平軸のラベルの位置を設定できます。



 BX=get(gca,'XTick'); BY=get(gca,'YTick'); xlabel('','Position',[BX(size(BX,2))+1.1 BY(1)+(BY(1)/100)]) xlabel('f, ', 'Position',[BX(size(BX,2))+1.1 BY(1)+(BY(1)/100)])
      
      





BYと同様に、BX配列は[xy]として表されます。ここで、xは署名の水平位置、yは署名の垂直位置です。



その結果、私たちはそのような美しさを見ることができます
画像



以下にいくつかの便利なリンクを残します。



axesコマンドの説明

軸コマンド設定

plotyyチーム ;

開発者から追加の水平軸を導入する方法



All Articles