Zeichnen außerhalb des Wertebereichs mit pgfplots

Tabellen und Grafiken erstellen und anordnen


ThoRie
Forum-Century
Forum-Century
Beiträge: 159
Registriert: Fr 12. Mai 2017, 11:57

Zeichnen außerhalb des Wertebereichs mit pgfplots

Beitrag von ThoRie »

Hallo, ich habe ein Problem mit dem folgenden Code:
\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0,xmax=65,xtick={0,5,...,60},ymin=0,ymax=65,axis x line=bottom,axis y line =none
]
\draw (1,0) arc (0:180:.5);
\draw (3,0) arc (0:180:1); %eigentlich: \draw (3,0) arc (0:-180:1);
\end{axis}
\end{tikzpicture}
\end{document}
Die Aufgabestellung ist, dass die Halbkreise jeweils abwechselnd ober- und unterhalb des Zahlenstrahls liegen sollen.
Deswegen habe ich es in axis versucht, da ich hier wenigstens gleich die Beschriftung des Strahles (x-Achse) generieren lassen kann.
Allerdings kann der zweite Halbkreis nicht unterhalb der Achse angezeigt werden, da das ja laut Achsendefinition faktisch nicht da ist. Ich habe auch versucht den Code anzupassen:
\documentclass[tikz,border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xmin=0,xmax=65,xtick={0,5,...,60},ymin=-65,ymax=65,axis x line=bottom,axis y line =none
]
\draw (1,0) arc (0:180:.5);
\draw (3,0) arc (0:-180:1);
\end{axis}
\end{tikzpicture}
\end{document}
Was aber dabei passiert, kann man sehen, wenn man diesen Code kompiliert.

Hat jemand hier vielleicht Ahnung davon und kann mir mit dem Problem helfen? :?

Stamm-

Auslagerung

Beitrag von Stamm- »

Ganz abgesehen davon, dass Du eine veraltete Syntax für \arc verwendest, kannst Du die Bögen außerhalb von 'axis' zeichnen. Der Radius bedarf dann möglicherweise einer Anpasssung.
\documentclass[tikz,border=2pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
  \begin{tikzpicture}
    \begin{axis}[
      xmin=0,
      xmax=65,
      xtick={0,5,...,60},
      ymin=0,
      ymax=65,
      axis x line=bottom,
      axis y line =none
    ]
    \end{axis}
    \draw (1,0) arc[start angle=0,delta angle=180,radius=0.5];
    \draw (1,0) arc[start angle=180,delta angle=180,radius=1];
  \end{tikzpicture}
\end{document}

ThoRie
Forum-Century
Forum-Century
Beiträge: 159
Registriert: Fr 12. Mai 2017, 11:57

Beitrag von ThoRie »

Also ein Kommilitone hat mich gerade auf meine Dummheit aufmerksam gemacht, so dass ich den Code berichtigen konnte:
\documentclass[tikz,border=5pt]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=newest} 
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
xmin=0,xmax=65,xtick={0,5,...,60},ymin=-65,ymax=65,
axis x line=middle,%<- angeglichen, damit die Halbkreise um die x-Achse liegen
axis y line =none,
yscale=2%<- neu eigefügt, damit es wirklich Halbkreise werden
] 
\draw (1,0) arc (0:180:.5); 
\draw (3,0) arc (0:-180:1); 
\end{axis} 
\end{tikzpicture} 
\end{document}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Du kannst auch die Länge einer Einheit für die x- und y-Richtung vorgeben:
\documentclass[tikz,border=5pt]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=newest} 
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
xmin=0,xmax=65,xtick={0,5,...,60},ymin=-65,ymax=65, 
axis x line=middle,
axis y line =none,
x=1mm,y=1mm% <- Länge einer Einheit vorgeben
] 
\coordinate (x) at (0,0);
\draw (1,0) arc (0:180:.5); 
\draw (3,0) arc (0:-180:1); 
\end{axis} 
\end{tikzpicture}
\end{document}
und eventuell noch clip=false setzen:
\documentclass[tikz,border=5pt]{standalone} 
\usepackage{pgfplots} 
\pgfplotsset{compat=newest} 
\begin{document} 
\begin{tikzpicture} 
\begin{axis}[ 
xmin=0,xmax=65,xtick={0,5,...,60},ymin=-1,ymax=1,% <- geändert
axis x line=middle,
axis y line =none,
x=1mm,y=1mm,% <- Länge einer Einheit vorgeben
clip=false% <- ergänzt
] 
\coordinate (x) at (0,0);
\draw (1,0) arc (0:180:.5); 
\draw (3,0) arc (0:-180:1); 
\end{axis} 
\end{tikzpicture}
\end{document}

Antworten