Update 2 auf Anfrage von OP

Update 2 auf Anfrage von OP

Ich möchte (auf der Rückseite) eine Figur wie unten gezeigt zeichnen: eine Zahlenachse mit einigen Intervallen, die durch eingekreiste Zahlen angezeigt werden: Bildbeschreibung hier eingeben

Antwort1

Update 2 auf Anfrage von OP

Ich habe einen neuen Stil namens erstellt, from inftyum das Intervall von darzustellen -infinity. Um Text unter die Zahlen zu setzen, habe ich den Begrenzungsrahmen Axe genannt und einen Knoten darunter platziert.

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}}

Bildschirmfoto

\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}

Update auf Anfrage des OP

Ich habe einen neuen Stil namens erstellt, to inftyum das Intervall bis unendlich darzustellen. Um Text unter die Zahlen zu setzen, habe ich den Begrenzungsrahmen benannt axeund einen Knoten darunter platziert.

Der Code ist mit auskommentiert %<--.

Bildschirmfoto

\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}

Kurvenparameter

Diese beiden Stile sind standardmäßig eingestellt, es erscheint die vorherige Abbildung. Es ist möglich, die zu ändernHöheder Kurve und ihrerKrümmungmit den folgenden Parametern. Beispielsweise my curve=12mm of .4bedeutet, dass die Kurve eineHöhevon 12 mmund dass dieKontrollpunkteder Bézierkurve befinden sich an 0.4und 1-0.4=0.6des Pfades.

Bildschirmfoto

\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);

Erste Antwort

Ich habe diemeine Kurve 7Code, den ich hier geschrieben habe. Ich habe ihn umbenannt 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}} 

Ich habe ein definiert pic, das es Ihnen ermöglicht, ein Häkchen zu setzen und darunter Text zu schreiben.

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

Ergebnis:

Bildschirmfoto

Code:

\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}

verwandte Informationen