
Isto é bastante simples. Quero expandir a caixa delimitadora dos meus pgfplots sem usar enlargelimits
ou 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.
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). enlargelimits
corrige 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=x
com domain=1:3
deveria produzir algo mais parecido com isto
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)
Sem enlargelimits
(problemas circulados)
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}