andi67
04-12-2012, 18:08
Hallo,
ich benutze TikZ um mir Gitterstrukturen zu zeichnen.
Ich habe mir ein Programm geschrieben das mir, auf basis eines komplizierteren aber für mein Problem unwichtigen Algoritmus', eine Liste mit TikZ Nodes ausgibt.
Sie sieht ungefähr so aus:
\node (110) at (1.124124,0.00000) [nodestyle] {};
\node (210) at (1.000000,4.23530) [nodestyle] {};
\node (300) at (4.324250,2.00000) [nodestyle] {};
.......
Im Prinzip berechne ich die Positionen wo ich die Nodes haben will, ganz genau will ich an diesen Stellen kleine Kreise zeichnen, das konnte ich praktischerweise für alle Nodes durch eine Styledefiniton machen:
\tikzstyle{nodestyle}=[circle,draw=black,fill=red,inner sep=0,minimum size=3.5mm]
Jetzt brauche ich aber eine andere Darstellung, nämlich anstelle der Kreise will ich an den Positionen kleine Pfeile zeichnen.
Was schonmal geht ist an den Positionen der Nodes mittels draw Pfeile zu malen:
\draw[->,thick] (110.center) --+(0,0.5);
...
Das Problem dabei ist, dass ich so mein Programm anpassen muss.
Wenn ich die Nodes behalte dann, muss ich sie unsichtbar machen und kann dann dne draw Befehl nutzen, somit hätte ich aber zwei Zeilen für nur ein Objekt das scheint mir unpraktisch. Ich könnte auch die Nodes komplett rausschmeissen und nur den draw Befehlt nutzen, dann scheint mir aber eine Möglichkeit die Pfeile Auszurichten verloren zu gehen (siehe mein zweites Problem unten).
Ich würde das gerne nur durch änderung des tikzstyles für den Node "nodestyle" machen. Also den Node nicht als Kreis/circle sondern als Pfeil zeichnen.
Ich kenne mich noch nicht wirklich gut mit TikZ aus deshalb waren meine Versuche das zu lösen auch alle erfolglos.
Deshalb erstmal die grundsätzliche Frage, geht das überhaupt und wenn ja wie?
Ein anderes Problem betrifft die Darstellung selbst, so wie ich den Pfeil oben mit draw zeichne, ist sein startpunkt im Center des Nodes. Ich habe festgestellt das es besser aussieht wenn ich den Pfeil verschiebe und zwar so, dass die Mitte des Pfeiles (nicht sein Startpunkt) im Center des Nodes liegt (den Node habe ich unsichtbar gemacht aber von der Größe so gelassen):
\draw[->,thick] (110.south) --+(0,0.5);
dieser Pfeil zeigt nach oben.
Nun ist es aber leider so, dass ich auch Pfeile habe die in eine belibige Richtung zeigen, also nicht nur das oben, unten, links oder rechts. D.h. mit south,north,east und west komme ich nicht aus, gibt es da noch weitere Optionen?
danke schonmal.
ich benutze TikZ um mir Gitterstrukturen zu zeichnen.
Ich habe mir ein Programm geschrieben das mir, auf basis eines komplizierteren aber für mein Problem unwichtigen Algoritmus', eine Liste mit TikZ Nodes ausgibt.
Sie sieht ungefähr so aus:
\node (110) at (1.124124,0.00000) [nodestyle] {};
\node (210) at (1.000000,4.23530) [nodestyle] {};
\node (300) at (4.324250,2.00000) [nodestyle] {};
.......
Im Prinzip berechne ich die Positionen wo ich die Nodes haben will, ganz genau will ich an diesen Stellen kleine Kreise zeichnen, das konnte ich praktischerweise für alle Nodes durch eine Styledefiniton machen:
\tikzstyle{nodestyle}=[circle,draw=black,fill=red,inner sep=0,minimum size=3.5mm]
Jetzt brauche ich aber eine andere Darstellung, nämlich anstelle der Kreise will ich an den Positionen kleine Pfeile zeichnen.
Was schonmal geht ist an den Positionen der Nodes mittels draw Pfeile zu malen:
\draw[->,thick] (110.center) --+(0,0.5);
...
Das Problem dabei ist, dass ich so mein Programm anpassen muss.
Wenn ich die Nodes behalte dann, muss ich sie unsichtbar machen und kann dann dne draw Befehl nutzen, somit hätte ich aber zwei Zeilen für nur ein Objekt das scheint mir unpraktisch. Ich könnte auch die Nodes komplett rausschmeissen und nur den draw Befehlt nutzen, dann scheint mir aber eine Möglichkeit die Pfeile Auszurichten verloren zu gehen (siehe mein zweites Problem unten).
Ich würde das gerne nur durch änderung des tikzstyles für den Node "nodestyle" machen. Also den Node nicht als Kreis/circle sondern als Pfeil zeichnen.
Ich kenne mich noch nicht wirklich gut mit TikZ aus deshalb waren meine Versuche das zu lösen auch alle erfolglos.
Deshalb erstmal die grundsätzliche Frage, geht das überhaupt und wenn ja wie?
Ein anderes Problem betrifft die Darstellung selbst, so wie ich den Pfeil oben mit draw zeichne, ist sein startpunkt im Center des Nodes. Ich habe festgestellt das es besser aussieht wenn ich den Pfeil verschiebe und zwar so, dass die Mitte des Pfeiles (nicht sein Startpunkt) im Center des Nodes liegt (den Node habe ich unsichtbar gemacht aber von der Größe so gelassen):
\draw[->,thick] (110.south) --+(0,0.5);
dieser Pfeil zeigt nach oben.
Nun ist es aber leider so, dass ich auch Pfeile habe die in eine belibige Richtung zeigen, also nicht nur das oben, unten, links oder rechts. D.h. mit south,north,east und west komme ich nicht aus, gibt es da noch weitere Optionen?
danke schonmal.