Сделать видимым текст узла за пределами диапазона осей pgfplot

Сделать видимым текст узла за пределами диапазона осей pgfplot

Я использую matlab2tikz для генерации кода pgfplots .tex для создания рисунка с помощью pdflatex. Функция matlab, которую я использую для создания рисунка, создает каждую из меток его делений явно, так что их можно масштабировать и вращать с помощью следующего кода matlab:

text(x(k),y(k),labs{k},'horizontalalignment',horizk,...
'verticalalignment',vertk, ...
'rotation',rotang(k), ...
'fontsize',gfontsize*scl(k), ...
'color',gcolor, ...
'tag','m_grid_xticklabel', ...
'fontname',gfontname);

Когда я исследую преобразованный .tex-код, я вижу следующее:

\node[below, inner sep=0mm, rotate=359.994889043193, text=black]
at (axis cs:-8.79858922562881e-07,  -4.84813663392814e-06,0) {$\text{  81}^\text{o}\text{W }$};

представляет собой одиночную метку деления. Текстовая строка, для которой эта строка кодирует, однако, не появляется в результирующем .pdf, предположительно, потому что конкретные координаты лежат за пределами диапазонов осей. Чтобы проверить это, я заменил координаты в диапазоне, скомпилировал и увидел, что метка или текст затем стали видимыми.

Интересно, что если я создам фигуру в Matlab с помощью команды view, например

view(45,45)

Я вижу текстовые строки, представляющие метки осей, но выравнивание нарушено. В частности, строки, похоже, имеют значение y, которое помещает их намного выше на рисунке, чем я ожидал. Я думаю, что выравнивание x в порядке.

Решения, как я их вижу, могут находиться либо на стороне matlab, либо на стороне pgfplots/tikz. В идеале решение будет состоять из короткого фрагмента кода, который будет включен в преамбулу или при настройке меток осей. Этот код позволит создать текст с помощью конструкции:

\node[<options>] at (axis cs:x,y,z) {<text>};

для отображения независимо от того, были ли координаты x, y, z в пределах диапазона. Если предложения не обязательно приходят легко, я могу создать mwe.

решение1

Добавление clip=falseпараметров axisсреды переопределит pgfplotsповедение по умолчанию, при котором все, что появляется за пределами ограничивающей рамки оси, обрезается.

В зависимости от другого сгенерированного кода это может иметь другие побочные эффекты, но в большинстве случаев все будет в порядке.

Эту настройку ключа можно добавить в сгенерированный код с помощью matlab2tikzсредства EXTRAAXISOPTIONS. Перед вызовом matlab2texдобавьте

EXTRAAXISOPTIONS = {'clip=false'};

чтобы добавить эту опцию в сгенерированный код.

Связанный контент