объединение абсолютных и относительных координат для метки оси

объединение абсолютных и относительных координат для метки оси

Рассмотрим следующий MWE

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{
    compat=1.12,
    stdaxis/.style={
        ylabel style={at={(ticklabel cs:1.06)},anchor=west,rotate=270},
        }
    }
\begin{document}
\begin{tikzpicture}
    \begin{axis}[stdaxis,ylabel=$f(x)$,xlabel=$x$]
    \addplot {x^2};
    \end{axis}
\end{tikzpicture}
\end{document}

произведенный выход

Это именно то, что мне нужно. Моя проблема в том, что когда я использую тот же stdaxisстиль для другой картинки с другой высотой, метка оси Y "f(x)" становится слишком высокой или слишком низкой. Чтобы обойти это, я хотел бы использовать абсолютное позиционирование и изменить стиль на что-то вродеylabel style={at={(ticklabel cs:1.0+5mm)},anchor=west,rotate=270}

Как это возможно?

решение1

Этого можно добиться с помощью расчетов координат с использованием библиотеки TikZ calc(см.раздел 13.5 руководства PGF/TikZ):

\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\pgfplotsset{
    compat=1.12,
    stdaxis/.style={
        ylabel style={at={($(ticklabel cs:1.0)+(0mm,5mm)$)},anchor=west,rotate=270},
        }
    }
\begin{document}
\begin{tikzpicture}
    \begin{axis}[stdaxis,ylabel=$f(x)$,xlabel=$x$]
    \addplot {x^2};
    \end{axis}
\end{tikzpicture}
\end{document}

пример графика с меткой y на 5 мм выше верхнего левого угла поля оси

решение2

Использоватьyshift=5mm после rotate=270:

введите описание изображения здесь

Код:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{
    compat=1.12,
    stdaxis/.style={
            ylabel style={at={(ticklabel cs:1)},
            anchor=west,
            rotate=270,
            yshift=5mm% <-
            },
        }
    }
\begin{document}
\begin{tikzpicture}
    \begin{axis}[stdaxis,ylabel=$f(x)$,xlabel=$x$]
    \addplot {x^2};
    \end{axis}
\end{tikzpicture}

\bigskip
\begin{tikzpicture}
    \begin{axis}[stdaxis,height=10cm,ylabel=$f(x)$,xlabel=$x$]
    \addplot {x^2};
    \end{axis}
\end{tikzpicture}
\end{document}

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