Ich benötige mehrere Graphen, die in Koordinatensystemen mit ähnlichen Eigenschaften dargestellt werden sollen. Daher habe ich einen entsprechenden xparse-Befehl definiert, der als Argumente die jeweiligen Achseneinstellungen, optional eine Angabe zum Definitionsbereich und schließlich den Funktionsterm erwartet.

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}
\NewDocumentCommand \Graph {m o m}
{
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
\addplot[semithick,samples=200,\IfNoValueF{#2}{domain=#2}] {#3};
\end{axis}
\end{tikzpicture}
}
\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Das Beispiel liefert die Fehlermeldung ! Package pgf Error: Unknown arrow tip kind domain=. Was muss ich verändern?

gefragt 07 Apr '16, 11:15

Cletus's gravatar image

Cletus
1.6k75867
Akzeptiert-Rate: 75%


Das ist wieder einmal ein Expansionsproblem, es lässt sich beispielsweise lösen, indem man nicht erst in \addplot die Fallunterscheidung vornimmt, sondern bereits davor:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}
\NewDocumentCommand \Graph {m o m}
{
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
\IfNoValueTF{#2}{%
\addplot[semithick,samples=200] {#3};
}{%
\addplot[semithick,samples=200,domain=#2] {#3};
}%
\end{axis}
\end{tikzpicture}
}
\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Hat man mehrere optionale Argumente ist es ggf. weniger aufwendig, wenn man die \addplot-Anweisung quasi stückweise expandiert:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}
\NewDocumentCommand \Graph {m o m}
{
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
\edef\localplotcommandoptions{%
[semithick,samples=200\IfNoValueF{#2}{,domain=\unexpanded{#2}}]%
}\expandafter\plot\localplotcommandoptions{#3};
\end{axis}
\end{tikzpicture}
}
\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Die einfachste Lösung wäre, wenn das optionale Argument einfach als zusätzliche Optionen von \addplot definiert würde. Dann könnte man einfach wie folgt arbeiten:

Open in Online-Editor
Code, hier editierbar zum Übersetzen:
\documentclass{article}
\usepackage{pgfplots}
\usepackage{xparse}
\NewDocumentCommand \Graph {m O{} m}
{
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xtick=\empty,ytick=\empty,#1]
\addplot[semithick,samples=200,#2] {#3};
\end{axis}
\end{tikzpicture}
}
\begin{document}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}[domain=0:6]{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\Graph{xmin=0,xmax=6.5,ymin=0,ymax=6}{-53/360*(x-3)^4-1/20*(x-3)^3+437/360*(x-3)^2+9/20*(x-3)+1}
\end{document}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Permanenter link

beantwortet 07 Apr '16, 11:37

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 08 Apr '16, 14:39

2

Ich würde ja eher hinter begin{tikzpicture} \IfNoValueF{#2}{\pgfplotsset{every axis plot/.append style={domain=#2}}} einfügen. (Wobei ich wahrscheinlich gar nicht so ein optionales Argument benutzen würde, sondern [domain=0:6] eingeben würde, lesbarer und leichter zu erweitern ...)

(07 Apr '16, 18:52) Ulrike Fischer
1

@Ulrike: Du darfst gerne eine entsprechende Antwort verfassen.

(08 Apr '16, 14:34) saputello
Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×298
×5
×4

gestellte Frage: 07 Apr '16, 11:15

Frage wurde gesehen: 8,449 Mal

zuletzt geändert: 08 Apr '16, 14:39