データのプロットの下の領域を強調表示したいと思います。最初の領域はプロットの下、y 軸の 8 より上にする必要があります。2 番目の領域は曲線の下、最初の領域の下、y 軸の 6 より上にする必要があります。
ここにスケッチと最小限の動作例を示します (私の描画スキルが下手で申し訳ありません ;) ):
\documentclass{minimal}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{filecontents}
\usetikzlibrary{intersections, pgfplots.fillbetween}
\begin{filecontents}{coordinates.dat}
1 2
2 4
3 5
4 5
5 7
6 9
7 10
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[name path=data] table {coordinates.dat};
\path [name path=p8] (0,8) -- (7,8);
\path [name intersections={of=p8 and data, by=m}];
\draw [name path=p80, dashed] (m) -- (7,8);
%\tikzfillbetween[of=p80 and data]{blue, opacity=0.1};
\path [name path=p6] (0,6) -- (7,6);
\path [name intersections={of=p6 and data, by=m}];
\draw [name path=p60, dashed] (m) -- (7,6);
%\tikzfillbetween[of=p60 and data]{red, opacity=0.1};
\end{axis}
\end{tikzpicture}
\end{document}
どうやってやるの?
おそらく tikzfill (コードを参照) が正しい方法ですが、x 軸と y 軸を制限する方法がわかりません。
答え1
このオプションを利用することができますintersection segments
(PGFplots マニュアルの 5.7 章「Fill between」を参照)。
\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{fillbetween}
\begin{filecontents}{coordinates.dat}
1 2
2 4
3 5
4 5
5 7
6 9
7 10
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[name path=data] table {coordinates.dat};
\path [name path=p8] (0,8) -- (7,8);
\path [name intersections={of=p8 and data, by=m}];
\draw [name path=p80, dashed] (m) -- (7,8);
\fill [blue, opacity=0.1, intersection segments={of=data and p8,
sequence={L2 -- R2[reverse]}}] -- cycle;
\path [name path=p6] (0,6) -- (7,6);
\path [name intersections={of=p6 and data, by=m}];
\draw [name path=p60, dashed] (m) -- (7,6);
\path [name path=p68, intersection segments={of=data and p6,
sequence={L2 -- R2[reverse]}}] -- cycle;
\fill [red, opacity=0.1, intersection segments={of=p68 and p80,
sequence={L1 -- L3}}] -- cycle;
\end{axis}
\end{tikzpicture}
\end{document}
答え2
\begin{filecontents}{coordinates.dat}
1 2
2 4
3 5
4 5
5 7
6 9
7 10
\end{filecontents}
\documentclass[tikz, border=1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\begin{scope}
\clip plot file {coordinates.dat} |- cycle;
\filldraw[fill=red!40, dashed] (0,6-|current axis.south west) rectangle (current axis.north east);
\filldraw[fill=blue!40, dashed] (0,8-|current axis.south west) rectangle (current axis.north east);
\end{scope}
\addplot+[thick] table {coordinates.dat};
\end{axis}
\end{tikzpicture}
\end{document}