.png)
Ich möchte einen Bereich in meinem Plot schattieren, während ich verwende axes equal=true
. Ein Teil dessen, was ich für schattiert hielt, ist jedoch nicht schattiert. Dies ist mein MWE
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
axis equal=true,
axis lines=middle,
axis on top,
ticks=none,
xmin=-3,xmax=3,
ymin=-3,ymax=3,
]
\addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
und das ist die Ausgabe, die ich bekomme
Aus irgendeinem Grund führt die Verwendung von equal axis=true
dazu, dass die X-Achse über den Wert hinausragt xmin
, wodurch mein schattierter Bereich zu klein wird. Wenn ich die Anweisung jedoch auskommentiere equal axis=true
, sieht der schattierte Bereich genau so aus, wie ich es möchte (aber ich brauche die equal axis=true
Anweisung, um sicherzustellen, dass die Senkrechten, die ich zeichnen möchte, tatsächlich senkrecht aussehen).
Antwort1
Im pgfplots-Handbuch wird Folgendes erwähnt (Abschnitt 4.10.1 „Allgemeine Skalierungsoptionen“, Hervorhebung von mir):
/pgfplots/axis equal={true,false}
Jeder Einheitsvektor wird auf die gleiche Länge eingestellt, während die Achsenabmessungen konstant bleiben. Danach sind die Größenverhältnisse für jede Einheit in x und y gleich.
Achsengrenzen werden erweitertum den Skalierungseffekt auszugleichen.
Die Einstellung wird also tatsächlich xmin
nicht eingehalten. Nach den Beispielen heißt es im Handbuch:
Die Konfiguration
axis equal=true
ist eigentlich nur ein Stil, der festlegtunit vector ratio=1 1 1, unit rescale keep size=true
.
Hoch schauen unit rescale keep size
:
/pgfplots/unit rescale keep size=true|false|unless limits declared
In der Standardkonfiguration behält pgfplots die ursprünglichen Achsendimensionen bei, auch wenn das Einheitsvektorverhältnis unterschiedliche Skalierungen beinhaltet. Dies geschieht durch die Vergrößerung der Grenzen.
Wenn Sie dies auf setzen, unless limits declared
wird die xmin
Änderung verhindert. Ich bin nicht 100 % sicher, dass diese Einstellung (in Kombination mit unit vector ratio=1 1 1
) tatsächlich gleiche Achsen erzeugt, aber es scheint zu funktionieren. Code:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[
%axis equal=true,
unit vector ratio=1 1 1,
unit rescale keep size=unless limits declared,
axis lines=middle,
axis on top,
ticks=none,
xmin=-3,xmax=3,
ymin=-3,ymax=3,
]
\addplot[draw=none,fill=gray!20!white] (-3,-3) -- (-1.125,-3) -- (0.375,3) -- (-3,3) -- cycle;
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}