是否可以用科学记数法标记等高线图?

时间:2016-11-30 08:48:23

标签: matlab plot contour

考虑以下MWE来创建等高线图:

use Symfony\Component\HttpFoundation\JsonResponse;

public function editAction(Request $request, Uni $uni)
{
    return $this->render('AppBundle:Uni:edit.html.twig', [
        'uni' => $uni,
    ], new JsonResponse());
}

但是,标签始终显示轮廓的完整整数表示法。 是否有合理的方法来改变这种行为?(比如,MATLAB在命令窗口中显示变量的方式,或强制科学记数法)

enter image description here

1 个答案:

答案 0 :(得分:7)

您可以使用未记录的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