tikz에서 수평선 차트를 그리는 방법은 무엇입니까?

tikz에서 수평선 차트를 그리는 방법은 무엇입니까?

그래서수평선 차트다음과 같이 보입니다: 여기에 이미지 설명을 입력하세요

개별적으로 검사할 수 있는 함수 도표 페이지를 간단하게 표현하는 동시에 큰 그림과 함수 상관 관계를 표시할 수 있습니다. 또한 Horizon Charts는 흑백 형식으로 쉽게 인쇄할 수 있습니다.

간단히 말해서 이러한 차트의 아이디어는 각 행에 대해 i을 얻고 Y_i=F_i(X)플롯하여 각 행에 대해 Y_i > RowHeight오버레이 레이어를 얻고 YY_i = YY_i - RowHeight; 다음 오버레이 레이어 등을 얻으면 YY_i > RowHeight각 행 함수에 어떤 일이 발생하는지 그림에 잘 설명되어 있습니다.여기에서:

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

로 변하다

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

그렇다면 tikz를 사용하여 정적 지평선 차트를 그리는 방법은 무엇입니까?

답변1

질문을 오해할 수도 있지만 제가 읽는 방식으로는 클립과 작은 상대적 이동만 있으면 됩니다.

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\newsavebox\DuckBox
\sbox\DuckBox{\begin{tikzpicture}[trig format=rad]
 \fill[blue!20] plot[variable=\x,domain=0:10,samples=31,smooth] 
  (\x,{1.5+(1+0.5*rnd)*sin(\x)*sin(\x)}) |- (0,0);
 \fill[blue!40] plot[variable=\x,domain=0:10,samples=61,smooth] 
  (\x,{1+(1+0.5*rnd)*sin(\x)*sin(\x)*sin(2*\x)*sin(2*\x)}) |- (0,0);
 \fill[blue!60] plot[variable=\x,domain=0:10,samples=61,smooth] 
  (\x,{0.5+(1+0.5*rnd)*sin(\x)*sin(\x)*sin(2*\x)*sin(2*\x)}) |- (0,0);
\end{tikzpicture}}
\begin{document}
\begin{tikzpicture}
\foreach \X [count=\Y] in {pft,blub,bla,quack,meow}
 {\begin{scope}
  \clip (-5,\Y*0.52) rectangle (5,0.5+\Y*0.52);
  \node[anchor=south] at (0,0.2+\Y*0.15) {\usebox\DuckBox};
  \node[anchor=south west,font=\sffamily] at (-5,\Y*0.52) {\X};
 \end{scope}}
\end{tikzpicture}
\end{document}

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

새로운 버전의 질문에 대한 답변은 질적으로 동일합니다.

\documentclass[border=3mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.pathmorphing}
\newsavebox\DuckBox
\sbox\DuckBox{\begin{tikzpicture}[trig format=rad]
 \path[save path=\pathA] plot[variable=\x,domain=0:10,samples=151] 
  (\x,{-(1.2+0.5*rnd)*sin(1.15*\x-1)+0.5*sin(2*\x)+\x/3}) |- (0,0);
 \foreach [count=\Y starting from 0] \X in 
    {blue!20,orange!20,orange!40,orange!60,orange!80}
  {\begin{scope}
    \clip (0,1.5*\Y-1.5) rectangle (10,1.5*\Y);
    \fill[\X,use path=\pathA];
   \end{scope}}
\end{tikzpicture}}
\begin{document}
\begin{tikzpicture}
\node[anchor=south west,outer sep=0pt,inner sep=0pt] 
  at (0,4) {\usebox\DuckBox};
\clip (0,0) rectangle (10,1.5);
\node[anchor=south west,outer sep=0pt,inner sep=0pt,yscale=-1] 
  at (0,1.5) {\usebox\DuckBox};
\foreach \Y in {1,...,4}
 {\node[anchor=south west,outer sep=0pt,inner sep=0pt] 
  at (0,-1.5*\Y) {\usebox\DuckBox};
 }
\end{tikzpicture}
\end{document}

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

관련 정보