Tikz - Abschnittsweise Linieneigenschaften & Zeichenmeth

Tabellen und Grafiken erstellen und anordnen


die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Tikz - Abschnittsweise Linieneigenschaften & Zeichenmeth

Beitrag von die_nase »

Hallo zusammen,
ich habe zwei Fragen, die sich beide auf Tikz beziehen.

1. Ist es möglich eine Linie von einem Punkt beginnend und mit einer bestimmten Länge durch einen anderen Punkt zu zeichnen? - Ähnlich wie bei der Winkelangabe einer Linie (zB. 75:3, wobei 3 die Linienlänge und 75 der Winkel ist)? (im MB unter dem "Linienlänge"-Kommentar)



2. Wie lassen sich die Verbindungspunkte zwischen zwei Linien mit unterschiedlichen Eigenschaften gestalten? - Bzw. wie lässt sich dies überhaupt bewerkstelligen?

Möchte ich die Punkte (wie im MB unter "Linieneigenschaften" verbinden, dann sind die Übergänge nahtlos. Kann man Optionen für die einzelnen Abschnitte abgeben, so dass beispielsweise die Strecke (0,0) -- (-1,0) grün ist, die Strecke (-1,0) -- (1,1) gestrichelt und grün, etc.? - Und das ohne für jede Strecke einzeln angeben zu müssen (und dafür immer einen separaten \draw-Befehl zu schreiben?)

Viele Grüße

\documentclass{article}
\usepackage[latin1]{inputenc}
\usepackage{tikz}
\pgfplotsset{width=\textwidth, compat=newest}

\begin{document}

\begin{tikzpicture}
% Linienlänge
	\draw[red, thick] (2,3) -- (5,3);
	\fill[black] (2,3)circle(1.5pt);
	\fill[black] (5,3)circle(1.5pt);

	\draw[red, thick] (2,2) -- (7,2);
	\fill[black] (2,2)circle(1.5pt);
	\fill[black] (5,2)circle(1.5pt);
% Linieneigenschaften	
	\draw[blue, thick] (0,0) -- (-1,0) -- (1,1) -- (4,0);
\end{tikzpicture}

\end{document}

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

Re: Tikz - Abschnittsweise Linieneigenschaften & Zeichen

Beitrag von esdd »

die_nase hat geschrieben:
1. Ist es möglich eine Linie von einem Punkt beginnend und mit einer bestimmten Länge durch einen anderen Punkt zu zeichnen? - Ähnlich wie bei der Winkelangabe einer Linie (zB. 75:3, wobei 3 die Linienlänge und 75 der Winkel ist)? (im MB unter dem "Linienlänge"-Kommentar)
Lade die calc Bibliothek und verwende dann die in der pgf/TikZ-Dokumentation in den Unterabschnitten "The Syntax of Partway Modifiers" und "The Syntax of Distance Modifiers" beschriebene Syntax.

die_nase hat geschrieben: 2. Wie lassen sich die Verbindungspunkte zwischen zwei Linien mit unterschiedlichen Eigenschaften gestalten? - Bzw. wie lässt sich dies überhaupt bewerkstelligen?
Gegenfrage: Was sind Verbindungspunkte zwischen zwei Linien??

die_nase hat geschrieben: Möchte ich die Punkte (wie im MB unter "Linieneigenschaften" verbinden, dann sind die Übergänge nahtlos. Kann man Optionen für die einzelnen Abschnitte abgeben, so dass beispielsweise die Strecke (0,0) -- (-1,0) grün ist, die Strecke (-1,0) -- (1,1) gestrichelt und grün, etc.? - Und das ohne für jede Strecke einzeln angeben zu müssen (und dafür immer einen separaten \draw-Befehl zu schreiben?)
Innerhalb eines \draw Befehles kannst Du die Eigenschaften der Linie nicht ändern. Je nachdem, was man eigentlich tun möchte, kann man sich eventuell mit einer Schleife behelfen.
\documentclass[margin=10pt]{standalone} 
\usepackage{tikz} 
\usetikzlibrary{calc}

\begin{document} 
\begin{tikzpicture}[
  punkt/.style={fill=black,radius=1.5pt},
  linie/.style={#1}
]
\path
  (2,3)coordinate(h1)
  (5,3)coordinate(h2)
;
\draw[red](h1)--($(h1)!4cm!(h2)$);
\foreach \n in {h1,h2}\path[punkt](\n)circle;
\path[yshift=-1cm]
  (2,3)coordinate(h1)
  (5,3)coordinate(h2)
;
\draw[green](h1)--($(h1)!2!(h2)$);
\foreach \n in {h1,h2}\path[punkt](\n)circle;

\foreach[remember=\p as \lastp (initially {0,0})] \p/\c in {%
  {-1,0}/red,%
  {1,1}/{green,dashed},%
  {4,0}/{blue,dotted}%
}\draw[linie/.expanded=\c](\lastp)--(\p);
\end{tikzpicture} 
\end{document}
Gruß
Elke

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Hallo Elke,

super, vielen Dank für deine tolle Lösung. - "Verbindungspunkte" sind natürlich quatsch! (damit meine ich die Verbindungslinien)

Meine Idee war, dass ich zwei Punkte (beispielsweise (0,0) und (3,2)) mit einer Linie (thick) verbinde und die Linie nach dem vorgegebenen Punkt (3,2) die Eigenschaft dotted und thick hat. Die Länge nach dem Punkt möchte ich dann vorgeben. Gibt es dafür eine einfachere Lösung?

P.S.: Elke, deine Lösung funktioniert super! Es geht vielleicht ein bisschen um die Effizienz.

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

Beitrag von esdd »

die_nase hat geschrieben:Meine Idee war, dass ich zwei Punkte (beispielsweise (0,0) und (3,2)) mit einer Linie (thick) verbinde und die Linie nach dem vorgegebenen Punkt (3,2) die Eigenschaft dotted und thick hat. Die Länge nach dem Punkt möchte ich dann vorgeben.
Das geht zum Beispiel so
\documentclass[margin=10pt]{standalone} 
\usepackage{tikz} 
\usetikzlibrary{calc} 

\begin{document} 
\begin{tikzpicture}[ 
   punkt/.style={fill=black,radius=1.5pt}, 
]
% Koordinaten festlegen
\path 
   (0,0)coordinate(h1) 
   (3,2)coordinate(h2) 
 ;
% Verbindunglinien
\draw(h1)--(h2);
\draw[dotted,thick](h2)--($(h2)!-1cm!(h1)$);
% Punkte markieren
\foreach \n in {h1,h2}\path[punkt](\n)circle; 
\end{tikzpicture} 
\end{document}
die_nase hat geschrieben: Gibt es dafür eine einfachere Lösung?
Mit TikZ gibt es immer viele verschiedene Lösungen, siehe zum Beispiel Teilweise gestrichelte Kurve. Was davon einfacher oder effizienter ist, hängt von der Zeichnung als Ganzes ab.

Was jedenfalls nicht geht, ist das Du innerhalb eines Pfades Eigenschaften wie Farbe, Dicke, Art der Linie änderst, siehe dazu in "14 Syntax for Path Specifications" der Dokumentation (Link siehe meinen vorhergehenden Beitrag):
Some options only apply to the path as a whole. For example, the color= option for determining
the color used for, say, drawing the path always applies to all parts of the path. If several different
colors are given for different parts of the path, only the last one (on the outermost scope) “wins”:...

Most options are of this type.
Gruß
Elke

PS: Bitte informiere Dich, was der Status "Rückfrage" bedeutet.

die_nase
Forum-Fortgeschrittener
Forum-Fortgeschrittener
Beiträge: 50
Registriert: So 3. Mai 2015, 21:05

Beitrag von die_nase »

Super, vielen Dank!

Antworten