階段状棒グラフ

階段状棒グラフ

私は LaTeX 初心者です。図の描き方を調べたところ、TikZ が役立つことがわかりました。下の画像を参考にして、どなたか指示していただけないでしょうか...

私のドキュメントでarticleは のクラスを使用しており、非常にシンプルです。どなたか助けていただければ幸いです。

答え1

ここで尋ねている内容は、ここのいくつかの投稿に散在しています。いくつかの提案:

  • いくつかのパラメータをTiに保存すると便利かもしれないZ は を介し​​て機能しますdeclare function
  • パスに沿って鋭角と丸角を切り替えることができます。これをもう少し実用的にするには、以下のコードのようにショートカットを定義しscますrc
  • ランダムな形状の場合は、random steps装飾を使用できます。

それ以外では、望ましい出力を生成するのはほとんど面倒です。

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{decorations.pathmorphing}
\begin{document}
\begin{tikzpicture}[declare function={L=3;t=0.8;d=3;r=0.4;P=4;},
    rc/.style={rounded corners=r*1cm},sc/.style={sharp corners},
    >=stealth]
 \draw[semithick] (0,0) coordinate (start)-- ++ (0,d) foreach \X [count=\Y] in 
  {0.1,0.1+0.8/3,0.1+1.6/3,0.9} {coordinate[pos=\X] (auxL\Y) 
    } [rc] -- ++ (P,0) [sc] -- ++ (0,t)  coordinate (p1)
  --++ (L,0) coordinate[pos=0.4] (p2) coordinate (p3) [rc] -- ++ (0,-t) [sc] 
  -- ++ (P,0)   coordinate[pos=0.3] (p4) coordinate[pos=0.4] (p5)  coordinate (p6)
   -- ++ (0,-d)  coordinate (p7)
  foreach \X [count=\Y] in 
  {0,1/3,2/3,1} {coordinate[pos=\X] (auxR\Y) 
    }
  [rc] -- ++(-P,0)[sc] --++ (0,-t) coordinate (p8)
  -- ++(-L,0) [rc] --++(0,t) coordinate (p12) [sc] -- cycle
  ([xshift=0.6cm]auxR2) node[right]{$S$}
  foreach \Y in {1,...,4}
  {(auxR\Y) edge[->,shorten <=2pt] ++ (0.6,0)
  (auxL\Y) node[left,circle,draw,inner sep=2pt](c\Y) {}};
 \draw ([yshift=2mm]p1) -- coordinate (p9) ++ (0,0.8) ([yshift=2mm]p3) -- ++ (0,0.8)
    ([xshift=2mm]p3) -- ++ (0.8,0) coordinate[pos=0.8] (p10)
    ([xshift=2mm]p8) -- ++ (0.8,0) coordinate[pos=0.8] (p11);
 \draw[<->] (p2) -- node[fill=white]{$H$} (p2|-p8); 
 \draw[<->] (p9) -- node[fill=white]{$L$} (p3|-p9); 
 \draw[<->] (p10) -- node[fill=white]{$t$} (p10|-p6); 
 \draw[<->] (p11) -- node[fill=white]{$t$} (p11|-p7); 
 \draw[<->] (p5) -- node[fill=white]{$d$} (p5|-p7); 
 \draw[<-] (p12) ++ (45:r) ++ (-r,-r) -- ++ (-135:0.5) node[below left] {$r$};
 \fill[decorate,decoration={random steps,segment length=pi*1pt},gray!50] 
 (c1.west|-start) to[bend left] ++ (0,d);
 \draw (c1.west|-start) -- ++ (0,d);
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

これが、必要なグラフを描くための出発点となり、いくつかの情報を提供してくれることを願っています。

関連情報