Обновление: это решение в первую очередь применимо к версиям 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' a> на 'tex', чтобы символ тета отображался правильно.
Технически приведенный выше код нужно вызывать только один раз, а не каждый раз, когда вызывается polarlabel. Однако текстовый объект не существует до тех пор, пока вы в первый раз не щелкнете по графику, чтобы вызвать всплывающую подсказку по данным (т. е. при первом вызове polarlabel), поэтому код должен идти в UpdateFcn для объекта режима курсора данных, поэтому что первая отображаемая подсказка имеет правильное форматирование текста.
person
gnovice
schedule
03.11.2009