Expanda a caixa delimitadora do pgfplots

Expanda a caixa delimitadora do pgfplots

Isto é bastante simples. Quero expandir a caixa delimitadora dos meus pgfplots sem usar enlargelimitsou clip=false.

Por que?

VerImpedir o recorte de linha do pgfplot sem estender o eixo

Por que não enlargelimits?

Porque eu gostaria que houvesse um domínio 'legal' para que as marcas de escala funcionassem 'perfeitamente' também.

a feiúra

MWE

\documentclass{article}

\usepackage{pgfplots}

\pgfplotsset{
    no marks,axis lines=middle,
    enlargelimits={abs=1pt},
    minor x tick num=1,
    every x tick/.style={color=black, thin},
    every y tick/.style={color=black, thin},
}

\begin{document}

\begin{center}
    \begin{tikzpicture}
        \begin{axis}[domain=1:2]
            \addplot+{x};
        \end{axis}
    \end{tikzpicture}
\end{center}

\end{document}

Alguns esclarecimentos

Gosto de engrossar a linha; por padrão, isso causa problemas de recorte (veja a pergunta vinculada). enlargelimitscorrige isso, mas traz seu próprio problema com as marcas mencionadas anteriormente. O que eu quero ver é algo como abaixo, quando deveria ser um gráfico 'limpo' (isto é, bons números), por exemplo, y=xcom domain=1:3deveria produzir algo mais parecido com isto

melhorar

enquanto ainda expande a caixa delimitadora de recorte.

Espero que isso deixe as coisas mais claras.

Uma versão mais longa (desculpe)

Para fornecer uma imagem mais completa do problema, aqui está um exemplo maior.

Com enlargelimits(problemas circulados)

imagem3

Sem enlargelimits(problemas circulados)

insira a descrição da imagem aqui

MWE 2

\documentclass{article}

\usepackage{pgfplots}
\usetikzlibrary{arrows.meta,calc}

\pgfplotsset{
    compat=newest,
    no marks,
    % -- AXIS
    axis lines=middle,
    axis on top,
    % -- AXIS ARROWS
    inner axis line style={draw=none},
    clip mode=individual,
    execute at end axis={
        \path[tips=proper] let \p1=($(rel axis cs:1,1)-(current axis.origin)$),
        \p2=($(current axis.origin)-(rel axis cs:0,0)$)
        in %\pgfextra{\typeout{\x1,\x2,\y1,\y2}}
        \ifdim\x1>1.5pt
            (current axis.origin) edge[-{Latex[round,length=\ifdim\x1<3mm 1.2mm\else 2mm\fi]}]
            ($({rel axis cs:1,0} |- {current axis.origin})+($(1.36mm,0)-(0,0)$)$)
        \fi
        \ifdim\x2>1.5pt
            (current axis.origin) edge[-{Latex[round,length=\ifdim\x2<3mm 1.2mm\else 2mm\fi]}]
            ($({rel axis cs:0,0} |- {current axis.origin})+($(-1.36mm,0)-(0,0)$)$)
        \fi
        \ifdim\y1>1.5pt
            (current axis.origin) edge[-{Latex[round,length=\ifdim\y1<3mm 1.2mm\else 2mm\fi]}]
            ($({rel axis cs:0,1} -| {current axis.origin})+($(0,1.36mm)-(0,0)$)$)
        \fi
        \ifdim\y2>1.5pt
            (current axis.origin) edge[-{Latex[round,length=\ifdim\y2<3mm 1.2mm\else 2mm\fi]}]
            ($({rel axis cs:0,0} -| {current axis.origin})+($(0,-1.36mm)-(0,0)$)$)
        \fi;
    },
    % % -- TICKS
    minor x tick num=1,
    every x tick/.style={color=black, thin},
    every y tick/.style={color=black, thin},
    tick align=outside,
    %
    every axis plot/.append style={
        very thick,
        line cap=round
    },
    samples=100,
    enlargelimits={abs=1pt}, % prevent clipping of plot lines
    % inner axis line style={shorten >=0.6pt, shorten <=0.6pt},
}

\begin{document}

\begin{center}
    \begin{tikzpicture}
        \begin{axis}[domain=1:2,small]
            \addplot+{x};
        \end{axis}
    \end{tikzpicture}
    \begin{tikzpicture}
        \begin{axis}[domain=1:2,small]
            \addplot+{x^2/2-x};
        \end{axis}
    \end{tikzpicture}
\end{center}

\end{document}

informação relacionada