Erweitern Sie den Begrenzungsrahmen von pgfplots

Erweitern Sie den Begrenzungsrahmen von pgfplots

Das ist ziemlich einfach. Ich möchte den Begrenzungsrahmen meiner pgfplots erweitern, ohne enlargelimitsoder 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.

die Hässlichkeit

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). enlargelimitsbehebt 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=xsollte domain=1:3etwas wie das hier entstehen

besser

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)

Bild3

Ohne enlargelimits(Probleme eingekreist)

Bildbeschreibung hier eingeben

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}

verwandte Informationen