Seite 1 von 1

pgfplots: shader=interp funktioniert nicht

Verfasst: Do 1. Dez 2016, 11:19
von Konrad
Werte LaTeX-Experten!

Ich möchte einen 3D-Surface-Plot mit dem Paket pgfplots erstellen. Leider funktioniert hierbei die Option shader=interp nicht. Ich benutze folgendes Minimalbeispiel:
\documentclass{scrartcl}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[view={0}{90}]
\addplot3[surf,shader=interp] coordinates {(0,0,0) (0,1,1) (1,0,0.5) (1,1,0.25)};
\end{axis}
\end{tikzpicture}

\end{document}
Beim Kompilieren kommt folgender Fehler:

! Package pgfplots Error: CRITICAL: shader=interp: got unsupported pdf shading
type '0'. This may corrupt your pdf!.

See the pgfplots package documentation for explanation.
Type H <return> for immediate help.
...

l.10 \end{axis}

Weiß jemand, ob und wie man dies beheben kann?

Ich wäre sehr dankbar!

Verfasst: Do 1. Dez 2016, 12:44
von Gast
AFAIK brauchst du eine Funktion, die die Überfläche beschreibt. Du hast hingegen gar keine Oberfläche, sondern nur eine einzelne Linie im Raum, wobei die angegebene Blickrichtung auch noch dafür sorgt, dass es nach einer Linie in der Ebene aussieht.

Verfasst: Do 1. Dez 2016, 12:50
von Konrad
Nein, damit kann es nicht zusammenhängen. Im pgfplots-Handbuch auf Seite 143 ist ebenso ein Beispiel, das surf, shader=interp und coordinates nutzt. Wenn ich dieses in mein Dokument hineinkopiere, kommt derselbe Fehler beim Kompilieren.

Mache ich beim Kompilieren einen Fehler? Meine LaTeX-Version lautet This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016)

Verfasst: Do 1. Dez 2016, 12:54
von Gast
Sag ich doch! So sollte es dann beispielsweise funktionieren:
\documentclass{scrartcl}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}% für manche shader eigentlich min. compat=1.13
\begin{document}

\begin{tikzpicture}
\begin{axis}[view={0}{90}]
\addplot3[surf,shader=interp] 
coordinates {
  (0,0,0) (0,1,1) 

  (1,0,0.5) (1,1,0.25)
};
\end{axis}
\end{tikzpicture}

\end{document}
Beachte die Änderung bei coordinates, die zu einer Oberfläche statt einer Linie führen.

Verfasst: Do 1. Dez 2016, 13:12
von Konrad
Jetzt habe ich es verstanden: Man muss die Daten in Form einer Matrix eingeben, wie im Handbuch auf Seite 124 beschrieben. Leider habe ich nach dem Satz »The \addplot3 coordinates method works like its two–dimensional variant« aufgehört weiterzulesen. Danke für die Antwort.