
Das ist ziemlich einfach. Ich möchte den Begrenzungsrahmen meiner pgfplots erweitern, ohne enlargelimits
oder zu verwenden clip=false
.
Warum?
SehenVerhindern Sie das Abschneiden von pgfplot-Zeilen, ohne die Achse zu erweitern
Warum nicht enlargelimits
?
Denn ich hätte es gern, wenn es eine „ordentliche“ Domäne gäbe, damit die Häkchen auch „ordentlich“ funktionieren.
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}
Einige Klarstellungen
Ich möchte die Linie dicker machen, was standardmäßig zu Clipping-Problemen führt (siehe die verlinkte Frage). enlargelimits
behebt dies, bringt aber, wie bereits erwähnt, ein eigenes Problem mit den Markierungen mit sich. Was ich sehen möchte, ist etwas wie unten, wenn es ein „sauberes“ (also schönes Zahlen-)Diagramm sein soll, z. B. y=x
sollte domain=1:3
etwas wie das hier entstehen
während der Begrenzungsrahmen für das Zuschneiden weiterhin erweitert wird.
Ich hoffe, das macht die Dinge klarer.
Eine längere Version (sorry)
Um ein umfassenderes Bild des Problems zu vermitteln, hier ein größeres Beispiel.
Mit enlargelimits
(Probleme eingekreist)
Ohne enlargelimits
(Probleme eingekreist)
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}