f(x) 플롯 아래 여러 영역에 대한 가장 좋은 방법은 무엇입니까?

f(x) 플롯 아래 여러 영역에 대한 가장 좋은 방법은 무엇입니까?

여기에 이미지 설명을 입력하세요

코드:

\documentclass[dvipsnames]{article}
\usepackage{pgfplots}
\usetikzlibrary{babel,calc,backgrounds,quotes,angles,patterns,decorations.markings,intersections,arrows,arrows.meta}
\pgfplotsset{compat=newest}                       
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
                axis lines = middle,
                xmin = -1,
                ymin = -3,
                xmax = 6,
                ymax = 4,
                domain = -1:10,
                xtick = {1,2,...,5},
                ytick = \empty,
                xlabel style={below right},
                ylabel style={above left},
                x tick label style={below},
                xlabel = {$x$}, 
                ylabel = {$f$},
              ]    
              
    \addplot[very thick, color=Mahogany, domain=0:2, name path=p1] {3 - x};
    \addplot[very thick, color=Mahogany, domain=2:5, name path=p2] {3 - x};
    
    \addplot[domain=0:2, name path=x1] {0};
    \addplot[domain=2:5, name path=x2] {0};

    \addplot [fill=orange] fill between[of = p1 and x1];
    \addplot [fill=gray] fill between[of = p2 and x2];
  \end{axis}
\end{tikzpicture}

\end{document}

두 영역에서 5-x의 플롯을 깨지 않고 이 그림을 그릴 수 있는 다른 (더 우아한) 방법이 있습니까? 그리고 각 부분에 대해 x1과 x2를 만들지 않고.

미리 감사드립니다.

답변1

soft clipa를 사용하여 도메인 제한을 수정할 수 있습니다.

\documentclass[dvipsnames]{article}
\usepackage{pgfplots}
\usetikzlibrary{babel,calc,backgrounds,quotes,angles,patterns,decorations.markings,intersections,arrows,arrows.meta}
\pgfplotsset{compat=newest}                       
\usepgfplotslibrary{fillbetween}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
                axis lines = middle,
                xmin = -1,
                ymin = -3,
                xmax = 6,
                ymax = 4,
                domain = -1:10,
                xtick = {1,2,...,5},
                ytick = \empty,
                xlabel style={below right},
                ylabel style={above left},
                x tick label style={below},
                xlabel = {$x$}, 
                ylabel = {$f$},
              ]    
              
    \addplot[very thick, color=Mahogany, domain=0:5, name path=p1] {3 - x};
%    \addplot[very thick, color=Mahogany, domain=2:5, name path=p2] {3 - x};
    
    \addplot[domain=0:5, name path=x1] {0};
%    \addplot[domain=2:5, name path=x2] {0};

    \addplot [fill=orange] fill between[of = p1 and x1, soft clip={domain=0:2}];
    \addplot [fill=gray] fill between[of = p1 and x1, soft clip={domain=2:5}];
  \end{axis}
\end{tikzpicture}

\end{document}

여기에 이미지 설명을 입력하세요

관련 정보