Греческая буква в сюжете Matlab

Я создал сюжет в Matlab, и теперь я хотел бы добавить легенду со следующей командой:

legend({'Pos1', 'Pos2', 'Pos3', 'alpha Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);
legend('boxoff')

проблема в том, что alpha не преобразуется в греческую букву. Если я ommit фигурные скобки {}, то он работает, но мне они нужны, потому что я хочу только пометить первые четыре строки.

Как я могу получить греческую букву Альфа?

2 ответов


я хочу расширить ответ Даниэля и объяснить некоторые детали.

что происходит {}

когда записи легенды не указано в массиве ячеек, только свойства Location и Orientation может использоваться в прямом вызове legend. Если присутствуют другие свойства, они интерпретируются как элементы легенды. Это значит Interpreter и TextSize и это значения будут записями легенды. Комментарий обращаясь Адиль на почему это по-видимому работает без {}: на самом деле это не так, он даже бросает предупреждение, косвенно из-за вышеупомянутых причин.

Sidenote: в соответствии с синтаксисом, записи легенды должны быть предоставлены перед свойствами. Тем не менее, это работает в любом порядке, но я не рекомендую использовать это недокументированное поведение.

выбор участков

вы учтите, что вы должны использовать {} для выбора только первых четырех строк. Это не так, потому что legend выбирает первый N участки по умолчанию. Проблема заключалась в том, что свойства интерпретировались так, как описано выше. Чтобы выбрать определенные участки, вы можете использовать дескрипторы участков, чтобы исключить второй участок:

legend([ph1,ph3,ph4,ph5], 'Pos1', 'Pos3', 'Pos4', 'Pos5');

использование других свойств

уметь напрямую используйте другие свойства в вызове legend, вы можете предоставить записи легенды в виде ячейки матрица. Это разъединяет записи с парами имя-значение свойств. Например, измените размер шрифта:

legend({'Pos1', 'Pos2', 'Pos3', 'Pos4'}, 'Fontsize', 22);

другая возможность - использовать дескриптор для установки других свойств без использования массива ячеек:

l = legend('Pos1', 'Pos2', 'Pos3', 'Pos4');
set(l, 'Fontsize', 22);     % using the set-function
l.FontSize = 22;            % object oriented

latex-переводчика

если вы устанавливаете Interpreter to latex тогда все содержимое записей легенды должно быть компилируемым latex. Это значит \alpha не может использоваться вне математической среды. Добавить встроенное математическое выражение в LaTeX вы можете заключить его с помощью $-знаки. Так что $\alpha$ работает, как указано в ответе Даниила. С tex-интерпретатор, Matlab использует подмножество разметки TeX и автоматически работает для поддерживаемых специальных символов, поэтому не было бы необходимости в $...$ когда вы не используете latex intrpreter.


предложения

  • не забудьте $-знаки.
  • адрес конкретных участков в вызов legend.
  • используйте массив ячеек и установите все свойства в вызове в legend напрямую.
  • с ... вы можете разделить длинную линию на несколько.

например, вот так:

legend([ph1,ph3,ph4,ph5], ...
    {'Pos $\alpha$', 'Pos $\beta$', 'Pos $\gamma$', 'Pos  $\delta$'}, ...
    'Location', 'northeast', 'Interpreter', 'latex', 'FontSize', 22);

это полный код примера:

figure; hold on;
ph1 = plot(0,-1,'*'); ph2 = plot(0,-2,'*');
ph3 = plot(0,-3,'*'); ph4 = plot(0,-4,'*');
ph5 = plot(0,-5,'*'); ph6 = plot(0,-6,'*');
legend([ph1,ph3,ph4,ph5], ...
    {'Pos $\alpha$', 'Pos $\beta$', 'Pos $\gamma$', 'Pos  $\delta$'}, ...
    'Location', 'northeast', 'Interpreter', 'latex', 'FontSize', 22);

С таким результатом:

example


Вы забыли $

legend({'Pos1', 'Pos2', 'Pos3', '$\alpha$ Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);