Греческая буква в сюжете 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);
С таким результатом:
Вы забыли $
legend({'Pos1', 'Pos2', 'Pos3', '$\alpha$ Pos4'}, 'Location', 'northeast', 'Interpreter', 'latex', 'fontsize', 22);