0

Matlab でパレート図の右側の y 軸を太字にしようとしていますが、うまくいきません。誰か提案はありますか?ax の 2 番目の次元を変更しようとすると、「インデックスが行列の次元を超えています。

pcaCluster のエラー (66 行目) set(ax(2),'Linewidth',2.0);"

figure()
ax=gca();
h1=pareto(ax,explained,X);
xlabel('Principal Component','fontweight','b','fontsize',20)
ylabel('Variance Explained (%)','fontweight','b','fontsize',20)
set(ax(1),'Linewidth',2.0);
set(ax(1),'fontsize',18,'fontweight','b');
%set(ax(2),'Linewidth',2.0);
%set(ax(2),'fontsize',18,'fontweight','b');
set(h1,'LineWidth',2)
4

2 に答える 2

0

これは、ax が (最初/左の) 軸オブジェクトへのハンドルであるためです。それは単一の値であり、ax(1)運が良ければまた同じですが、単に有効ではありませんaxax(2)

2番目の軸を取得する方法についてのドキュメントを読むことをお勧めします。もう 1 つの良いアイデアは、プロット ブラウザーでプロットを開き、必要なオブジェクトをクリックして選択gcoし、コマンド ウィンドウに (get current object) と入力してそのハンドルを取得することです。その後、 で使用できますset(gco, ...)

于 2015-02-11T17:55:36.037 に答える
0

実際には、呼び出し中に出力引数を追加する必要があり、pareto2 つのハンドル (線と棒のシリーズ) と 2 つの軸を取得します。YTickLabel取得した2軸目のプロパティを取得したい。したがって、上記の呼び出しでは、引数paretoを指定する必要はないと思います。ax

例:

[handlesPareto, axesPareto] = pareto(explained,X);

このコマンドを使用すると、次のようになります。

RightYLabels = get(axesPareto(2),'YTickLabel') 

次の(または同様のもの)が得られます。

RightYLabels = 

    '0%'
    '14%'
    '29%'
    '43%'
    '58%'
    '72%'
    '87%'
    '100%'

実際にできることは、それらを完全に消去して、text好きなようにカスタマイズできる注釈に置き換えることです。素敵なデモンストレーションについては、こちらをご覧ください。

あなたの問題に(関数ドキュメントのダミー値を使用して)適用すると、次のことができます。

clear
clc
close all

y = [90,75,30,60,5,40,40,5];
figure
[hPareto, axesPareto] = pareto(y);

%// Get the poisition of YTicks and the YTickLabels of the right y-axis.
yticks = get(axesPareto(2),'YTick')
RightYLabels = cellstr(get(axesPareto(2),'YTickLabel'))


%// You need the xlim, i.e. the x limits of the axes. YTicklabels are displayed at the end of the axis.

xl = xlim;

%// Remove current YTickLabels to replace them.
set(axesPareto(2),'YTickLabel',[])

%// Add new labels, in bold font.
for k = 1:numel(RightYLabels)    
    BoldLabels(k) = text(xl(2)+.1,yticks(k),RightYLabels(k),'FontWeight','bold','FontSize',18);
end

xlabel('Principal Component','fontweight','b','fontsize',20)
ylabel('Variance Explained (%)','fontweight','b','fontsize',20)

これにより、次のようになります。

ここに画像の説明を入力

もちろん、このように必要なものをすべてカスタマイズできます。

于 2015-02-11T18:01:42.090 に答える