Anpassen von pgfplots

Anpassen von pgfplots

Ich habe Probleme mit der Steuerung der Achsen in pgfplots. Ich habe eine Umgebung für Graphen definiert

\newenvironment{graph}[3][]{\begin{figure}[htp]
\def\tempa{#1} %Saves caption since \end cannot take arguments
\begin{center}
\begin{tikzpicture}[scale=1] 
\draw node at (7,0) { \Large     $ #2 $ }; %variable on x-axis
\draw node at (0,6.1) { \Large $ #3 $}; %variable on y-axis
\begin{axis}[
      axis lines=left,
      axis equal,
      %ticks=none,
      %xlabel=$x$,
      %ylabel=$y$,
      %width=8cm,
      %height=8cm,
      domain=0:10.5,
      restrict y to domain=0:10.5
      samples=1000
  ]


}
{
\end{axis}
\end{tikzpicture}
\end{center}
\ifdefempty{\tempa}{}{\caption{\tempa}} %Creates caption if argument is present.
\end{figure}

} 

Wie Sie sehen, habe ich ein bisschen mit den Achsen experimentiert. Mein Problem ist, dass sie nicht gleich lang sind. Ich möchte, dass sie den gleichen festen Bereich 0:10,5 und die gleiche exakte Länge (cm) haben. Normalerweise ist die Y-Achse kürzer als die X-Achse. In Zeile 5 und 6 definiere ich die Namen der Achsen. Wie Sie sehen, werden die Variablen bei 6,1 platziert, anstatt bei etwa 10,5, was ich als Dimension der Achse definiert habe. Ich möchte die Koordinaten der Achse verwenden können, wenn ich den Zeichenbefehl verwende.

1

Wenn ich die Position auf 10 setze, werden die Knoten völlig falsch platziert.

\draw node at (10,0) { \Large    $ #2 $ }; %variable on x-axis

2

Das letzte Problem ist, dass die Zeichenfunktion in der Umgebung nicht funktioniert

\begin{graph}{x}{y}
\draw[dotted] (0,0) -- (2,2);
\end{graph}

Das bringt mir nichts:

3

Dank im Voraus.

Antwort1

Hier ist ein Vorschlag. Ich habe unit vector ratio=1 1 1anstelle von verwendet, axis equalweil axis equaldie x-Achse dadurch etwas verlängert wird, keine Ahnung, warum. Die Achsenbeschriftungen werden mit xlabel/ platziert ylabelund die Position durch Ändern des every axis x labelStils geändert, ähnlich wie bei y. Beachten Sie, dass die Koordinaten relativ zur Achse sind, also (0,1)befindet sich beispielsweise oben auf der y-Achse.

(Ich habe das \captionZeug entfernt, weil ich nicht weiß, woher \ifdefemptyes kommt, also würde dieser Teil nicht funktionieren.)

Wenn Sie in der Umgebung \drawähnliches verwenden möchten , verwenden Sie das Koordinatensystem, wie Sie in den folgenden Beispielen sehen können.graphaxis cs

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\newenvironment{graph}[3][]{\begin{figure}[htp]
\centering
\begin{tikzpicture}
\begin{axis}[
      axis lines=middle,
      unit vector ratio=1 1 1,
      every axis x label/.style={at={(1,0)},font=\Large,right},
      every axis y label/.style={at={(0,1)},font=\Large,above},
      xlabel=#2,
      ylabel=#3,
      domain=0:10.5,
      xmin=0,xmax=10.5,
      ymin=0,ymax=10.5,
      samples=100,
      no marks
  ]
}
{
\end{axis}
\end{tikzpicture}
\end{figure}
} 
\begin{document}
\begin{graph}{$x$}{$y$}
\addplot {x};
\addplot {x+1};
\addplot {x-1};
\draw [dotted] (axis cs:0,10.5) -- (axis cs:10.5,10.5) -- (axis cs:10.5,0);
\end{graph}

\begin{graph}{$X$}{$Y$}
\addplot {8*sin(deg(x))*sin(deg(x))};
\draw [thick,latex-latex] (axis cs:1.57,8) to[out=40,in=140] node[above]{random} (axis cs:3.14+1.57,8);
\end{graph}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen