كيف يمكنني استخدام تنسيق TEX / LATEX لنصائح البيانات المخصصة في MATLAB؟

StackOverflow https://stackoverflow.com/questions/1668071

سؤال

أحاول التعليق على قطعة مؤامرة قطبية مع نصائح البيانات المسمى مع 'R: ... أنا على دراية بتنسيق السلسلة باستخدام " Theta" الناتج عن الرمز، لكنه لا يعمل في هذه الحالة. هل هناك طريقة لتطبيق مترجم اللاتكس على نصائح البيانات؟ إليك ما لدي حتى الآن:

f1=figure;
t=pi/4;
r=1;
polar(t,r,'.');
dcm_obj = datacursormode(f1);
set(dcm_obj,'UpdateFcn',@polarlabel)
info_struct = getCursorInfo(dcm_obj);
datacursormode on

حيث يتم تعريف Polarlabel على النحو التالي:

function txt = polarlabel(empt,event_obj)
pos = get(event_obj,'Position');
x=pos(1);
y=pos(2);
[th,r]=cart2pol(x,y);
txt = {['R: ',num2str(r)],...
    ['\Theta: ',num2str(th*180/pi)]};
هل كانت مفيدة؟

المحلول

تحديث: ينطبق هذا الحل أساسا على الإصدارات R2014A وأكبر، حيث يبدو أنه يفشل في الإصدارات الأحدث، وتحديدا R2014B والأحدث باستخدام جديد نظام الرسومات مقبض. وبعد للحصول على إصدارات أحدث باستخدام نظام الرسومات المعالج الجديد، يمكن العثور على حل هنا.


لبعض السبب الغريب، أداة مؤشر البيانات في MATLAB يضع قسرا نص نصيحة البيانات المراد عرض حرفيا بدلا من تفسير TEX / LATEX (حتى لو كان إعدادات matlab الافتراضية قل للقيام بذلك). يبدو أنه لا توجد وسيلة لوضع خصائص النص مباشرة عبر خصائص كائن وضع مؤشر البيانات.

ومع ذلك، لقد اكتشفت وجهة نظر واحدة. إذا قمت بإضافة ما يلي إلى نهاية الخاص بك polarlabel وظيفة، يجب عرض النص بشكل صحيح:

set(0,'ShowHiddenHandles','on');                       % Show hidden handles
hText = findobj('Type','text','Tag','DataTipMarker');  % Find the data tip text
set(0,'ShowHiddenHandles','off');                      % Hide handles again
set(hText,'Interpreter','tex');                        % Change the interpreter

تفسير

كل كائن رسومات تم إنشاؤه في الشكل يجب أن يكون مقبض. وبعد الكائنات في بعض الأحيان لها 'HandleVisibility' خاصية ضبط ل 'off', ، لذلك لن تظهر مقابضهم في قائمة الأشياء الطفل لأكبرها الوالد، مما يجعلها أكثر صعوبة في العثور عليها. طريقة واحدة حول هذا هو ضبط 'ShowHiddenHandles' خاصية التابع كائن الجذر ل 'on'. وبعد هذا سوف يسمح لك بعد ذلك باستخدام findobj للعثور على مقابض كائنات الرسومات مع خصائص معينة. فيملحوظة: يمكنك أيضا استخدام findall ولا تقلق بشأن 'ShowHiddenHandles' ضبط)

تحول على وضع مؤشر البيانات والنقر فوق المؤامرة يخلق كائن HGGROUP, ، طفل واحد منها هو كائن النص للنص الذي يتم عرضه. يعثر الرمز أعلاه على هذا الكائن النص وتغيير 'Interpreter' خاصية ل 'tex' بحيث يتم عرض رمز Theta بشكل صحيح.

من الناحية الفنية، يجب استدعاء الكود أعلاه مرة واحدة فقط، وليس في كل مرة polarlabel يسمى. ومع ذلك، لا يوجد كائن النص حتى تنقر لأول مرة على المؤامرة لإظهار نصيحة البيانات (أي المرة الأولى polarlabel يحصل يسمى)، لذلك يجب أن يذهب الكود في UpdateFcn لكائن وضع مؤشر البيانات بحيث يتم عرض تلميح البيانات الأول تنسيق النص المناسب.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top