
Ich möchte, dass das letzte Segment weiß ist, aber es scheint, dass das letzte Segment mit dem vorherigen Segment kombiniert ist.
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\pgfmathdeclarefunction{vdw}{0}{\pgfmathparse{8.314*115/(x-0.0000364)-0.1358/x/x}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line = left,
axis x line = bottom,
xlabel = $V$,
ylabel = $P$,
samples = 500,
domain = 0.00005:0.0005,
xmin = 0, xmax = 0.00055,
ymin = 0, ymax = 5*10^6,
]
\addplot[name path=vdw, black, thick, mark=none, ] {vdw};
\addplot[name path=line, gray, no markers, line width=1pt] {2.0*10^6};
\addplot fill between[
of = vdw and line,
split, % calculate segments
every segment no 0/.style={white},
every segment no 1/.style={orange},
every segment no 2/.style={red},
every segment no 3/.style={white},
];
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Um aus dem PGFPLOTS-Handbuch zu zitieren (Abschnitt 5.6.8Fallstricke und Einschränkungen, S. 390),
Die erste Einschränkung ist die Skalierbarkeit. Die zugrunde liegenden Algorithmen sind relativ ineffizient und skalieren schlecht, wenn die Anzahl der Stichproben groß ist. Bitte wenden Sie sie auf eine angemessene Stichprobengröße und Diagramme mit einer angemessenen Anzahl von Schnittpunkten an. Das heißt: Wenn es zu lange dauert, müssen Sie möglicherweise die Stichprobendichte reduzieren.
Wenn Sie also die Anzahl der Proben etwas verringern (stellen Sie sich Ihren Schritt mit 500 Proben vor 9x10^{-7}
; zu dicht), erhalten Sie korrekte Ergebnisse. Hier habe ich mich samples = 200
einfach für einen Versuch-und-Irrtum-Ansatz entschieden.
\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.3}
\usepgfplotslibrary{fillbetween}
\pgfmathdeclarefunction{vdw}{0}{\pgfmathparse{8.314*115/(x-0.0000364)-0.1358/x/x}}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis y line = left,
axis x line = bottom,
xlabel = $V$,
ylabel = $P$,
samples = 200,
domain = 0.00005:0.0005,
xmin = 0, xmax = 0.00055,
ymin = 0, ymax = 5*10^6,
]
\addplot[name path=vdw, black, thick, mark=none, ] {vdw};
\addplot[name path=line, gray, no markers, line width=1pt] {2.0*10^6};
\addplot fill between[
of = vdw and line,
split, % calculate segments
every segment no 0/.style={white},
every segment no 1/.style={orange},
every segment no 2/.style={red},
every segment no 3/.style={white},
];
\end{axis}
\end{tikzpicture}
\end{document}