PGFPlots: Centrando linhas de eixo com rótulos de escala externos

PGFPlots: Centrando linhas de eixo com rótulos de escala externos

O que estou tentando alcançar:

Basicamente, quero chegar o mais próximo possível desta imagem: Imagem de um diagrama vazio com linhas de eixo centralizadas, mas rótulos na parte externa

Observe que as linhas dos eixos estão centralizadas, mas os rótulos das marcas estão do lado de fora (semelhante ao estilo de eixo em caixa).

O que tenho até agora:

\documentclass{minimal}

\usepackage{pgfplots}
\usepackage{graphicx}   % For \resizebox
\pgfplotsset{compat=newest}

\begin{document}
    \centering
    \resizebox{0.8\textwidth}{!}{%
        \begin{tikzpicture}
            \begin{axis}[
                axis lines=center,
                grid=major,
                xlabel=\(x\), xmin=-5.25, xmax=5.25,
                xtick distance=1, xtick pos=bottom,
                ymin=-5.25, ymax=5.25,
                ytick distance=1, ytick pos=left,
            ]

            \end{axis}
        \end{tikzpicture}
     } % \resizebox
\end{document}

Imagem de um diagrama vazio com linhas de eixo centralizadas e rótulos diretamente nos eixos

Como você pode ver, os próprios ticks foram movidos para a esquerda e para baixo, conforme especificado por xticklabel pos=bottome yticklabel pos=left.

Observe que, de acordo com oManual PGFPlots Revisão 1.16, seção 4.15.2 (Alinhamento de tick: posições e turnos):

A alteração tick postambém afetará a colocação dos rótulos de escala.

No entanto, este não parece ser o caso aqui.

Responder1

Aqui mostro uma solução possível para conseguir o que deseja.

O texto citado na sua pergunta talvez seja um pouco enganador, mas também está escrito lá que isso afeta apenasparcelas em caixa.

No entanto, dê uma olhada nos comentários no código para obter mais informações.

% used PGFPlots v1.16
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
        axis lines=center,
        xmin=-5.25,
        xmax=5.25,
        ymin=-5.25,
        ymax=5.25,
        xlabel=$x$,
        % move the `xlabel` to the right of the arrow
        xlabel style={
            anchor=west,
        },
        xtick distance=1,
        xtick pos=bottom,
        ytick distance=1,
        ytick pos=left,
        grid=major,
        % -----------------------------
        % move ticklabels to the "outside"
        xticklabel style={
%            % hard-coded solution --> dependent of axis scaling/size
%            yshift=-82pt,
            % relative shifting --> independent of axis scaling/size
            shift={(0,0 |- {axis description cs:0,-1})}
        },
        yticklabel style={
%            % hard-coded solution --> dependent of axis scaling/size
%            xshift=-100pt,
            % relative shifting --> independent of axis scaling/size
            shift={(0,0 -| {axis description cs:-0.53,0})}
        },
        % remove the ticks themselves
        % (which are moved as well)
        tickwidth=0pt,
        % show the "0"s (zeros) again
        hide obscured x ticks=false,
        hide obscured y ticks=false,
        % -----------------------------
%        % for testing only to see, if the shifting works independent of
%        % axis scaling
%        height=10cm,
    ]

    \end{axis}
\end{tikzpicture}
\end{document}

imagem mostrando o resultado do código acima

informação relacionada