Tikz Graphik verschönern

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Tikz Graphik verschönern

von Beinschuss » Mi 22. Jun 2016, 17:24

Ja, für das Zi (das ich in meinem obigen Post jetzt entfernt habe) gab es nur den Grund, dass ich bei der Schriftart im Editor kaum erkennen konnte, ob das "Z" nun groß oder klein geschrieben war. Durch das "i" konnte ich das besser erkennen. Für die Lösung Deines Problems ist es unerheblich.

von Trauminsel » Mi 22. Jun 2016, 13:39

ich habe alles verstanden was du gemacht hast beinschuss

Ausser wieso du z6 in zi6 umgewandelt hast.

gibt es dazu einen Grund?

von Beinschuss » Mi 22. Jun 2016, 13:01

Vielleicht, indem Du Dir ein TikzSet für die Nodes mit Rahmen definierst:

\documentclass[a4paper,12pt]{article} 
\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 
\usepackage{graphicx} 
\usepackage{tikz} 
\usetikzlibrary{graphs} %Notwendig für spezielle Graphiken mit tikz 
\tikzset{node1/.style={rectangle,rounded corners,draw=black, text centered},}
\begin{document} 
    \begin{tikzpicture}
    %Raster Zeichnen
      \draw [color=gray!30]  [step=2.5mm] (-1,-1.25) grid (9.25,2.25); %Damit kann ich ein Häuschenpapier machen
      \node[node1] (Z1) at (0,0) {Z1}; 
      \node[node1] (Z2) at  (2,1.5) {Z2}; 
      \node[node1] (Z3) at (3.5 ,1.5) {Z3}; 
      \node[node1] (Z4) at (1.0,-0.5) {Z4}; 
      \node[node1] (Z5) at (2.75, 0.75) {Z5}; 
      \node[node1] (Z6) at (8.0,0.0){Z6}; 
      \draw (Z1) -- (Z2); 
      \draw (Z1) -- (Z4); 
      \draw (Z1) -- (Z5); 
      \draw[dotted,  line width=1.0pt] (Z1) -- (Z6); 
      \draw (Z2) -- (Z3); 
       \draw[dashed,  line width=1.0pt] (Z3) -- (Z6);
       
       	\draw(Z4) -- node[below]{?} (Z6.west);
    \end{tikzpicture} 
  
\end{document}

von Trauminsel » Mi 22. Jun 2016, 11:53

Ich habe die Lösung von Beobachter verwendet, da ich mit diesem Ansatz vertrauter war.

Momentan sieht das ganze so aus:
\documentclass[a4paper,12pt]{article} 

\usepackage[utf8]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 


\usepackage{graphicx} 
\usepackage{tikz} 
\usetikzlibrary{graphs} %Notwendig für spezielle Graphiken mit tikz 

\begin{document} 

    \begin{tikzpicture}[every node/.style=draw]
    %Raster Zeichnen
      \draw [color=gray!30]  [step=2.5mm] (-1,-1.25) grid (9.25,2.25); %Damit kann ich ein Häuschenpapier machen
      \node (Z1) at (0,0) {Z1}; 
      \node (Z2) at  (2,1.5) {Z2}; 
      \node (Z3) at (3.5 ,1.5) {Z3}; 
      \node (Z4) at (1.0,-0.5) {Z4}; 
       \node (Z5) at (2.75, 0.75) {Z5}; 
      \node (Z6) at (8.0,0.0){Z6}; 
      \draw (Z1) -- (Z2); 
      \draw (Z1) -- (Z4); 
      \draw (Z1) -- (Z5); 
      \draw[dotted,  line width=1.0pt] (Z1) -- (Z6); 
      \draw (Z2) -- (Z3); 
       \draw[dashed,  line width=1.0pt] (Z3) -- (Z6);
    \end{tikzpicture} 
  
\end{document}
 
Jetzt würde ich gerne noch eine Linie zwischen Z4 un Z6 zeichnen, diese aber mit einem Fragezeichen versehen. Das kann ich natürlich so machen, dass ich mit \node ....ein Fragezeichen richtig positioniere. Dann wäre es aber auch in einem Kasten und das will ich nicht.

Deshalb zwei Fragen:

1.) Wie ist der Befehl every node...zu modifizieren damit nur die \node Z1-Z6 in einem Kasten sind.

2.) Gibt es einen einfachen Weg, damit ich das Fragezeichen nicht manuel ausrichten muss sondern das es sich schön unterhalb der Mitte der Linie zwischen Z4 und Z6 befindet.

Vielen Dank für eure Hilfe.

von esdd » Mi 15. Jun 2016, 10:40

Das geht mit
\path (Z1) -- node[pos=.5]{x}(Z3);
Woei in dem Fall [pos=.5] auch weg gelassen werden kann, weil es bei der Angabe von node nach -- default ist.


Gibt man den Node dagegen am Pfadende an, wäre pos=1 default.
\path (Z1) -- (Z3) node[pos=.5]{x};
Man könnte auch die calc Bibliothek laden und dann
\path ($(Z1)!0.5!(Z3)$)node{x};
oder
\node at ($(Z1)!0.5!(Z3)$){x};
nutzen.

Bei TikZ gibt es so viele Befehle und noch mehr Möglichkeiten, dass deren kurze, übersichtliche Darstellung eigentlich unmöglich ist. Für den Beginn dürften die Tutorials am Anfang der Doku ganz hilfreich sein sowie ein Querlesen des Teils "TikZ ist kein Zeichenprogramm", damit man ein Gefühl für die Möglichkeiten bekommt und eine Idee, wo man suchen kann. Der Rest kommt dann mit dem Anschauen von Beispielen und vorallem dem Anwenden.

von Trauminsel » Mi 15. Jun 2016, 09:42

ja jetzt sehe ich es auch. Ja bei grossen Projekten ist das deutlich einfacher und erspart ein stückweit das herumprobieren.

EDIT:
Ich glaube ich habe mit ein wenig herumprobieren verstanden wie der Code von Bartman funktioniert.

Nur der Teil ist mir noch nicht ganz klar:

\foreach \i in {1,...,6}{
\draw (Z1) -- (Z\i);

Wodurch wird genau \i bestimmt. Durch meine Beschriftung von Z1-Z1 nach \node ?

Das bedeutet, dass ich mit dieser Methode immer alle Punkte durchnummerieren muss, damit tikz versteht auf was ich mich beziehe richtig?

EDIT2:

Welchen Befehl nutze ich wenn ich etwa zwischen z1 und z3 setzten möchte und zwar exakt auf der Linie zwischen z1 und z3?

Die Tikz-Dokumentation die ich habe ist leider sehr lange, gibt es eine Seite wo all diese Befehle übersichtlich aufgelistet sind?

von DADABBI » Mi 15. Jun 2016, 09:31

Zum einen musst du nicht mehr für alles Koordinaten angeben, sondern sagst nur noch, wo die Knoten relativ zu den vorhandenen hin sollen. Das verringert die Wahrscheinlichkeit eines Koordinatenfehlers und ist besonder bei größeren Grafiken von Vorteil.

Zum anderen werden die Verbindungslinien einfach in einer Schleife gezeichnet. Die Wahrscheinlichkeit, eine Verbindungslinie zu vergessen, ist so geringer.

Was besser ist, musst du letztlich selbst entscheiden. Beides hat Vor- und Nachteile. Ich selbst finde Batmans Lösung aber eleganter.

von Trauminsel » Mi 15. Jun 2016, 08:24

Danke euch beiden :) wieder etwas gelernt :)

@Bartman: Was macht deine Variante besser als die von Beobachter? Seine ist doch deutlich einfacher.

von Bartman » Di 14. Jun 2016, 22:12

Mein Beispiel orientiert sich am Quelltext von Beobachter und zeigt eine weitere Möglichkeit, Deine Abbildung zu zeichen.
\documentclass[margin=5pt]{standalone}

\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{tikz}

\usetikzlibrary{positioning}

\begin{document}
\begin{tikzpicture}[
	nodes={
		draw=black!50,
		outer sep=-.45pt,
		rounded corners,
		thick,
		top color=white,
		bottom color=black!20
	}%,
%	node distance=15mm and 15mm
]
   \node (Z1)                                   {$Z_1$};
   \node (Z2) [above left  = of Z1]             {$Z_2$};
   \node (Z3) [above right = of Z1]             {$Z_3$};
   \node (Z4) [below right = of Z1]             {$Z_4$};
   \node (Z5) [below left  = of Z1]             {$Z_5$};
   \node (Z6) [right       = of Z1, xshift=5cm] {$Z_6$};

   \foreach \i in {2,...,6}{
      \draw (Z1) -- (Z\i); 
   }
   \draw (Z2) -- (Z3); 
\end{tikzpicture}
\end{document}

Kurzer Prozess

von Beobachter » Di 14. Jun 2016, 16:16

Du setzt explizit leere Knoten mit einer Marke (label) und zeichnest dann an deren Stelle die kleinen schwarzen Punkte. Das gewünschte Ergebnis ist in einem einzigen Schritt erreichbar. Wenn die Buchstaben doch nicht eingerahmt werden sollen, dann lasse die Option für tikzpicture einfach weg.
\documentclass[12pt,a4paper,ngerman]{article} 
\usepackage[T1]{fontenc}
\usepackage{selinput}  % Ersatz für `inputenc`
\SelectInputMappings{
  adieresis={ä},
  germandbls={ß}
}
\usepackage{lmodern} 
\usepackage{babel}
\usepackage{microtype}
\usepackage[margin=10pt,font=small,labelfont=bf,labelsep=endash]{caption} 
\usepackage{tikz} 

\begin{document} 
  \begin{figure}[!htb] 
    \centering 
    \begin{tikzpicture}[every node/.style=draw]
      \node (Z1) at (0,0) {$Z_1$}; 
      \node (Z2) at (-2,2) {$Z_2$}; 
      \node (Z3) at (2,2) {$Z_3$}; 
      \node (Z4) at (2,-2) {$Z_4$}; 
      \node (Z5) at (-2,-2) {$Z_5$}; 
      \node (Z6) at (8,0) {$Z_6$}; 
      \draw (Z1) -- (Z2); 
      \draw (Z1) -- (Z3); 
      \draw (Z1) -- (Z4); 
      \draw (Z1) -- (Z5); 
      \draw (Z1) -- (Z6); 
      \draw (Z2) -- (Z3); 
    \end{tikzpicture} 
    \caption{Verhältnis der Zustände} 
    \label{fig:verhaeltnis} 
  \end{figure} 
\end{document}

Nach oben