您可以使用無證MarkedClean
事件做到這一點。
不幸的是,Matlab每次更新圖形都會重繪圖形(例如圖形大小調整) - 所以您需要添加一個偵聽器來在每次發生時更新它們 - 因此您爲什麼要監聽這個特殊事件。
function test
figure
[X,Y]=meshgrid(0:100,0:100);
Z=(X+Y.^2)*1e10;
[C,h]=contour(X,Y,Z);
h.ShowText='on';
% add a listener and call your new format function
addlistener(h,'MarkedClean',@(a,b)ReFormatText(a))
end
function ReFormatText(h)
% get all the text items from the contour
t = get(h,'TextPrims');
for ii=1:length(t)
% get the current value (Matlab changes this back when it
% redraws the plot)
v = str2double(get(t(ii),'String'));
% Update with the format you want - scientific for example
set(t(ii),'String',sprintf('%0.3e',v));
end
end
我覺得這個答案將是非常適合的[**無證featues DOC **](http://stackoverflow.com/documentation/matlab/2383/undocumented-features#t=201612020612571995264),一多一點解釋和一個漂亮的截圖應該做到這一點。 – thewaywewalk
我已經添加了一個[示例](http://stackoverflow.com/documentation/matlab/2383/undocumented-features/26052/contour-plots-customise-the-text-labels) – matlabgui