2017-05-11 5 views
-2

x軸に8(名前)ラベルを表示しようとしています。代わりに、私は数1 GCA関数は軸ラベルを変更できません

8の問題を取得:私のprevious asked questionを、私は私が軸ラベルを変更することができます gca機能を、使用していました。ただし、同じ gca関数はここでは機能しません。

これは私のMatlabの出力である:...、

enter image description here

の代わりに1 8、私はFirm1 ... Firm8を見てみたいです!

これは私のコードです:

figure(2); 
%four variables: 
     %pi --> 8x1 vector 
     %E_R_BL_Idzorek --> 8x1 vector 
     %pi_star1 --> 8x1 vector 
     %ER_100_TF1 --> 8x1 vector 

ALL_DATA=[pi(1,1) E_R_BL_Idzorek(1,1) pi_star1(1,1) ER_100_TF1(1,1);pi(2,1) E_R_BL_Idzorek(2,1) pi_star1(2,1) ER_100_TF1(2,1);pi(3,1) E_R_BL_Idzorek(3,1) pi_star1(3,1) ER_100_TF1(3,1);pi(4,1) E_R_BL_Idzorek(4,1) pi_star1(4,1) ER_100_TF1(4,1);pi(5,1) E_R_BL_Idzorek(5,1) pi_star1(5,1) ER_100_TF1(5,1);pi(6,1) E_R_BL_Idzorek(6,1) pi_star1(6,1) ER_100_TF1(6,1);pi(7,1) E_R_BL_Idzorek(7,1) pi_star1(7,1) ER_100_TF1(7,1);pi(8,1) E_R_BL_Idzorek(8,1) pi_star1(8,1),ER_100_TF1(8,1)]; 

%plotting it with a bar function 
bar(ALL_DATA); 

%This is where I have problem with gca function 
set(gca,'xticklabel',{'Firm1','Firm2','Firm3','Firm4','Firm5','Firm6','Firm7','Firm8'}); 

%this is the grid part: 
grid on 
ll = cell(1,4); 
ll{1}='pi'; ll{2}='ERidz'; ll{3}='piTF'; ll{4}='ERTF'; 
legend(bar(ALL_DATA),ll); 

答えて

1

を行う必要がありますバーを再描画することにあるようです新しいバージョンのMATLABを使用しているため、使用する必要があります新しいグラフィックスシステム。新しいシステムはオブジェクトに基づいています。これにより、軸のようなもののプロパティを簡単に設定できます。例:

fh = figure; % creates the figure window save the figure handle to set it's properties 
ax = axes(fh); % creates the axes in the figure, again save the object 
x = rand(8,100); 
h = bar(ax, x); % create the bar graph in your axes object 
% now use the saved object to access the exact feature you want. This way you always have the thing you want. No searching. 
ax.XTickLabel = {'Firm1','Firm2','Firm3','Firm4','Firm5','Firm6','Firm7','Firm8'}; 

オブジェクトを保存すると、凡例などの追跡に便利です。例:legend(ax,...あなたはあなたが扱っている凡例を正確に知っています。

XTicksを正しく変更していますが、グラフをlegend(bar(...で上書きしているようです。新しいbarグラフが作成されます。その行をちょうどlegend(ll)に変更してみてください。私はまだオブジェクトシステムを使用することをお勧めします。

1

問題はあなたが

legend(bar(ALL_DATA),ll); 

を実行するときは、単に

legend(ll); 
関連する問題