곡선 아래 영역 채우기

곡선 아래 영역 채우기

데이터 플롯 아래의 영역을 강조하고 싶습니다. 첫 번째 영역은 플롯 아래에 있어야 하고 y축에서 8 위에 있어야 합니다. 두 번째 영역은 곡선 아래와 첫 번째 영역 아래, 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}

선분 곡선과 두 개의 채워진 영역이 있는 그래프

관련 정보