14

約 10'000 より大きいティックのティック ラベルは、たとえば 1x10^4 にフォーマットされます。一方、指数部は対応する軸の上に表示されます。この誤動作は、matlab centralでもよく説明されていますが、解決策はありません。

ご協力いただきありがとうございます。


「クイックトリック」

set(gca, 'YTickLabel',get(gca,'YTick'))

次の図に示すように、bar3 に適用すると機能しませんでした。

bar3 プロットの失敗

4

3 に答える 3

10

編集

このテクニカル ソリューション ページによると、ティック ラベルをフォーマットする推奨方法は次のとおりです (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','')

代替テキスト

于 2010-08-28T01:17:54.537 に答える
3

試すことができるもう 1 つのトリックは、データをプロットする前にスケーリングしてから、目盛りラベルをスケーリングして、別のスケールでプロットされているように見せることです。関数LOG10を使用すると、プロットされた値に基づいて適切な倍率を自動的に計算できます。変数xyにデータがあると仮定すると、これを試すことができます。

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
于 2010-08-28T03:44:25.013 に答える
1

ティック ラベルをより適切に制御し、指数形式を回避する 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
于 2010-08-28T01:13:11.953 に答える