OP のリクエストによるアップデート 2

OP のリクエストによるアップデート 2

下記のような図を描きたいです(次のページ)。丸で囲まれた数字で示された間隔を持つ数値軸です。 ここに画像の説明を入力してください

答え1

OP のリクエストによるアップデート 2

from inftyからの間隔を表すために、という新しいスタイルを作成しました-infinity。数字の下にテキストを配置するために、境界ボックスに axe という名前を付け、その下にノードを配置しました。

from infty/.style args={#1of#2}{%<-- new style "from infty"
            to path={($(\tikztostart)!#1!90:(\tikztotarget)$).. controls ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
                .. (\tikztotarget) \tikztonodes}}

スクリーンショット

\documentclass[tikz,border=5mm]{standalone}
%\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,quotes}
\begin{document}

\tikzset{my curve/.style args={#1of#2}{
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            and ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. (\tikztotarget)\tikztonodes}},
             my curve/.default={7mm of 0.25},
             to infty/.style args={#1of#2}{%<-- new style "to infty"
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. ($(\tikztotarget)!#1!90:(\tikztotarget)$) \tikztonodes}},
            from infty/.style args={#1of#2}{%<-- new style "from infty"
        to path={($(\tikztostart)!#1!90:(\tikztotarget)$).. controls ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. (\tikztotarget) \tikztonodes}},
             to infty/.default={7mm of 0.4},
             from infty/.default={7mm of 0.4}}  

\begin{tikzpicture} [pics/tick/.style={code={\draw ++(0,-.2)node[below]{#1}--++(0,.4);}}]
\begin{scope}[local bounding box=axe]%<-- bounding box "axe"
\coordinate (z') at (-2,0);
\coordinate (c) at (1,0);
\coordinate (b) at (4,0);
\coordinate (a) at (6,0);
\coordinate (z) at (9,0);
\draw[-{Stealth[]}] (-2,0)--(10,0);
\pic at (c){tick=c};
\pic at (b){tick=b};
\pic at (a) {tick=a};
%\pic at (z) {tick};
\draw (z')to["4"{draw,circle},from infty](c) to["2"{draw,circle},my curve] (b) to ["3"{draw,circle},my curve] (a) to ["1"{draw,circle},to infty](z);
\end{scope}
\node[below] at (axe.south){My axis};%<-- node to add caption
\end{tikzpicture}

\end{document}

OP のリクエストによる更新

無限大までの間隔を表すために、という新しいスタイルを作成しましたto infty。数字の下にテキストを配置するために、境界ボックスに名前を付けaxe、その下にノードを配置しました。

コードは でコメントアウトされています%<--

スクリーンショット

\documentclass[tikz,border=5mm]{standalone}
%\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,quotes}
\begin{document}

\tikzset{my curve/.style args={#1of#2}{
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            and ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. (\tikztotarget)\tikztonodes}},
             my curve/.default={7mm of 0.25},
             to infty/.style args={#1of#2}{%<-- new style "to infty"
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. ($(\tikztotarget)!#1!90:(\tikztotarget)$) \tikztonodes}},
             to infty/.default={7mm of 0.4}}  

\begin{tikzpicture} [pics/tick/.style={code={\draw ++(0,-.2)node[below]{#1}--++(0,.4);}}]
\begin{scope}[local bounding box=axe]%<-- bounding box "axe"
\coordinate (c) at (1,0);
\coordinate (b) at (4,0);
\coordinate (a) at (6,0);
\coordinate (z) at (9,0);
\draw[-{Stealth[]}] (0,0)--(10,0);
\pic at (c){tick=c};
\pic at (b){tick=b};
\pic at (a) {tick=a};
%\pic at (z) {tick};
\draw (c) to["2"{draw,circle},my curve] (b) to ["3"{draw,circle},my curve] (a) to ["1"{draw,circle},to infty](z);
\end{scope}
\node[below] at (axe.south){My axis};%<-- node to add caption
\end{tikzpicture}

\end{document}

曲線パラメータ

これら2つのスタイルが設定されており、デフォルトでは前の図が表示されます。身長曲線とその曲率以下のパラメータで指定します。例えば、my curve=12mm of .4曲線が身長12 mmそして、コントロールポイントベジェ曲線の と0.41-0.4=0.6パスの に配置されます。

スクリーンショット

\draw (c) to["2"{draw,circle},my curve=12mm of .4] (b) to ["3"{draw,circle},my curve=8mm of .2] (a) to ["1"{draw,circle},to infty=15mm of .6](z);

最初の答え

私は再利用した私のカーブ7ここに書いたコード。名前を変更しましたmy curve

\tikzset{my curve/.style args={#1of#2}{
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            and ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. (\tikztotarget)\tikztonodes}},
             my curve/.default={7mm of 0.25}} 

picチェックマークを描き、その下にテキストを書き込むことができる を定義しました。

pics/tick/.style={code={\draw ++(0,-.2)node[below]{#1}--++(0,.4);}}

結果:

スクリーンショット

コード:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows.meta,calc,quotes}
\begin{document}

\tikzset{my curve/.style args={#1of#2}{
        to path={.. controls ($(\tikztostart)!#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            and ($(\tikztostart)!1-#2!(\tikztotarget)!#1!90:(\tikztotarget)$) 
            .. (\tikztotarget)\tikztonodes}},
             my curve/.default={7mm of 0.25}}  

\begin{tikzpicture} [pics/tick/.style={code={\draw ++(0,-.2)node[below]{#1}--++(0,.4);}}]

\coordinate (c) at (1,0);
\coordinate (b) at (4,0);
\coordinate (a) at (6,0);
\coordinate (z) at (9,0);
\draw[-{Stealth[]}] (0,0)--(10,0);
\pic at (c){tick=c};
\pic at (b){tick=b};
\pic at (a) {tick=a};
\pic at (z) {tick};
\draw (c) to["2"{draw,circle},my curve] (b) to ["3"{draw,circle},my curve] (a) to ["1"{draw,circle},my curve](z);
\end{tikzpicture}

\end{document}

関連情報