2

最近、hg2 を含む新しいバージョンの MATLAB (2015a) で古いコード (hg1 で作成) を実行しようとしました。

以前は次のことができました(「gnovice - Amro」メソッドによると):

function output_txt = customDatatip(~,event_obj)
% Display the position of the data cursor
% obj          Currently not used (empty)
% event_obj    Handle to event object
% output_txt   Data cursor text string (string or cell array of strings).

hFig = ancestor(event_obj.Target,'figure'); %// I don't trust gcf ;)

pos = get(event_obj,'Position');
output_txt = {['\lambda: ',num2str(pos(1)*1000,4) 'nm'],...
              ['T(\lambda): ',num2str(pos(2),4) '%']};

set(findall(hFig, 'Type','text', 'Tag','DataTipMarker'),...
      'Interpreter','tex');     %// Change the interpreter

そして、ギリシャ文字で適切にフォーマットされたデータヒントラベルを取得します。

ただし、新しい hg2 システムでは、findallが返され、0x0 empty GraphicsPlaceholder array設定がInterpreter役に立たなくなります。

私の質問は: hg2 でプロット データチップ インタープリターを (La)TeX に設定するにはどうすればよいですか?

4

1 に答える 1

1

を使用して掘り下げた後、 がのプロパティ内のオブジェクトのタイプとして保存され、プロパティを持つことがuiinspectわかりました! どちらのプロパティも、ドット表記を使用して簡単に設定できます。私は次のコードを使用して終了しました:"TextBox"matlab.graphics.shape.internal.GraphicsTipobjTipHandleInterpreterpublic

function output_txt = customDatatip(obj,event_obj)
% Display the position of the data cursor // <- Autogenerated comment
% obj          Currently not used (empty) // <- Autogenerated comment, NO LONGER TRUE!
% event_obj    Handle to event object     // <- Autogenerated comment
% output_txt   Data cursor text string (string or cell array of strings). // <- A.g.c.

hFig = ancestor(event_obj.Target,'figure');

pos = get(event_obj,'Position');
output_txt = {['\lambda: ',num2str(pos(1)*1000,4) 'nm'],...
              ['T(\lambda): ',num2str(pos(2),4) '%']};

if ishg2(hFig)
    obj.TipHandle.Interpreter = 'tex';
else %// The old version, to maintain backward compatibility:
        set(findall(hFig, 'Type','text', 'Tag','DataTipMarker'),...
            'Interpreter','tex');     % Change the interpreter
end

function tf = ishg2(fig)
try
    tf = ~graphicsversion(fig, 'handlegraphics');
catch
    tf = false;
end

ノート:

  • 関数への最初の入力 ( obj) は、使用できるようになったため、無視されなくなりました。
  • ishg2関数は、この MATLAB Answer から取得されます

編集1:

ウェーブレット ツールボックスで見つけた次のコードを使用して、MATLAB のグラフィック バージョン (つまり、hg1/hg2) を確認する別の方法があることに気付きました。

function bool = isGraphicsVersion2
%//isGraphicsVersion2 True for Graphic version 2. 

%//   M. Misiti, Y. Misiti, G. Oppenheim, J.M. Poggi 21-Jun-2013.
%//   Last Revision: 04-Jul-2013.
%//   Copyright 1995-2013 The MathWorks, Inc.
%//   $Revision: 1.1.6.1 $  $Date: 2013/08/23 23:45:07 $

try
    bool = ~matlab.graphics.internal.isGraphicsVersion1;
catch
    bool = ~isprop(0,'HideUndocumented');
end
于 2015-05-03T07:45:32.493 に答える