約 10'000 より大きいティックのティック ラベルは、たとえば 1x10^4 にフォーマットされます。一方、指数部は対応する軸の上に表示されます。この誤動作は、matlab centralでもよく説明されていますが、解決策はありません。
ご協力いただきありがとうございます。
「クイックトリック」
set(gca, 'YTickLabel',get(gca,'YTick'))
次の図に示すように、bar3 に適用すると機能しませんでした。
約 10'000 より大きいティックのティック ラベルは、たとえば 1x10^4 にフォーマットされます。一方、指数部は対応する軸の上に表示されます。この誤動作は、matlab centralでもよく説明されていますが、解決策はありません。
ご協力いただきありがとうございます。
「クイックトリック」
set(gca, 'YTickLabel',get(gca,'YTick'))
次の図に示すように、bar3 に適用すると機能しませんでした。
編集
このテクニカル ソリューション ページによると、ティック ラベルをフォーマットする推奨方法は次のとおりです (NUM2STR、SPRINTF、MAT2STR、またはその他の数値フォーマット関数を使用できます)。
y = cool(7);
bar(y(:,1)*1e6)
set(gca, 'YTickMode','manual')
set(gca, 'YTickLabel',num2str(get(gca,'YTick')'))
ただし、Z 軸に関してはバグがあるようです (ラベルは正しくフォーマットされていますが、何らかの理由で指数乗数がまだ表示されています!)
y = cool(7);
bar3(y*1e6, 'detached')
set(gca, 'ZTickMode','manual')
set(gca, 'ZTickLabel',num2str(get(gca,'ZTick')'))
最後に、目盛りラベルをテキスト オブジェクトに置き換える別の回避策があります (この技術的な解決策のページを参照してください)。
y = cool(7);
bar3(y*1e6, 'detached')
offset = 0.25; Xl=get(gca,'XLim'); Yl=get(gca,'YLim'); Zt=get(gca,'ZTick');
t = text(Xl(ones(size(Zt))),Yl(ones(size(Zt)))-offset,Zt, num2str(Zt')); %#'
set(t, 'HorizontalAlignment','right', 'VerticalAlignment','Middle')
set(gca, 'ZTickLabel','')
試すことができるもう 1 つのトリックは、データをプロットする前にスケーリングしてから、目盛りラベルをスケーリングして、別のスケールでプロットされているように見せることです。関数LOG10を使用すると、プロットされた値に基づいて適切な倍率を自動的に計算できます。変数x
とy
にデータがあると仮定すると、これを試すことができます。
scale = 10^floor(log10(max(y))); %# Compute a scaling factor
plot(x,y./scale); %# Plot the scaled data
yTicks = get(gca,'YTick'); %# Get the current tick values
set(gca,'YTickLabel',num2str(scale.*yTicks(:),'%.2f')); %# Change the labels
ティック ラベルをより適切に制御し、指数形式を回避する 1 つの方法は、File Exchange のTICK2TEXTを使用することです。
次に例を示します。
y = cool(7); %# define some data
ah = axes; %# create new axes and remember handle
bar3(ah,y*1E6,'detached'); %# create a 3D bar plot
tick2text(ah, 'ztickoffset' ,-1.15,'zformat', '%5.0f', 'axis','z') %# fix the tick labels