Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Knotendiagramme zeichnen

63 views
Skip to first unread message

Florian Weimer

unread,
Apr 5, 2005, 10:57:34 AM4/5/05
to
Ich muß einen ganzen Haufen Knotendiagramme produzieren (oder genauer:
Ausschnitte von orientierten Link-Diagrammen). Bislang verwende ich
Xy-pic, aber das sieht, wenn man nicht gehörigen Aufwand treibt und
lauter magische Zahlen einstreut, nicht so toll aus -- oder die
Darstellung ist gar nicht möglich (weil die Diagramme nicht das sind,
was in der Literatur mitunter "reachable" genannt wird).

Was ich brauche, ist eine Möglichkeit, eine gewisse Menge von
Bézierkurven zur zeichnen. Wenn die Kurven sich schneiden, muß an
dieser Stelle eine der Kurven unterbrochen werden, so daß der visuelle
Eindruck ensteht, daß eine Kurve über der anderen liegt. Ferner müssen
die Kurven teilweise mit Pfeilen versehen werden, um die Orientierung
anzuzeigen.

Eine Lösung, die auf einer Textbeschreibung (ohne magische Zahlen, wie
sie bei Xy-pic notwendig sind) basiert, wäre mir am liebsten. Notfalls
ginge auch was GUI-mäßiges, was in der Lage ist, Bézier-Kurven
geeignet zu zersägen. (Die üblicherweise angebotene Ebenenfunktion
reicht nicht aus, weil sich eine Kurve selbst schneiden kann.) Das
Ergebnis sollte eine mit LaTeX zu verbeitende Vektorgraphik sein
(z.B. EPS).

Gibt's dafür schon was geeignetes?

Herbert Voss

unread,
Apr 5, 2005, 11:43:46 AM4/5/05
to
Florian Weimer wrote:

> Was ich brauche, ist eine Möglichkeit, eine gewisse Menge von
> Bézierkurven zur zeichnen. Wenn die Kurven sich schneiden, muß an
> dieser Stelle eine der Kurven unterbrochen werden, so daß der visuelle
> Eindruck ensteht, daß eine Kurve über der anderen liegt. Ferner müssen
> die Kurven teilweise mit Pfeilen versehen werden, um die Orientierung
> anzuzeigen.

lässt sich leicht mit PSTricks erreichen, wenn du die
Kurven der Reihe nach zeichnen kannst, also die hinterste
zuerst.

Herbert


--
http://TeXnik.de/
http://PSTricks.de/
ftp://ftp.dante.de/tex-archive/info/math/voss/Voss-Mathmode.pdf
http://www.dante.de/faq/de-tex-faq/
http://www.tex.ac.uk/cgi-bin/texfaq2html?introduction=yes

Joachim Schlosser

unread,
Apr 5, 2005, 12:34:18 PM4/5/05
to
Florian Weimer schrieb:

> Was ich brauche, ist eine Möglichkeit, eine gewisse Menge von
> Bézierkurven zur zeichnen. Wenn die Kurven sich schneiden, muß an
> dieser Stelle eine der Kurven unterbrochen werden, so daß der visuelle
> Eindruck ensteht, daß eine Kurve über der anderen liegt. Ferner müssen
> die Kurven teilweise mit Pfeilen versehen werden, um die Orientierung
> anzuzeigen.
> Gibt's dafür schon was geeignetes?

Da würde ich MetaPost empfehlen, ggf. mit MetaObj. Da gibt es z.B. die
Möglichkeit, die Linien gleich doppelt zu zeichnen, womit sich der
zersägen-Effekt erzeugen lassen müßte.

Joachim
--
Joachim Schlosser
FYI: Dies ist eine gültige und replyfähige Adresse.
http://schlosser.info

Florian Weimer

unread,
Apr 5, 2005, 1:33:46 PM4/5/05
to
* Joachim Schlosser:

> Florian Weimer schrieb:
>> Was ich brauche, ist eine Möglichkeit, eine gewisse Menge von
>> Bézierkurven zur zeichnen. Wenn die Kurven sich schneiden, muß an
>> dieser Stelle eine der Kurven unterbrochen werden, so daß der visuelle
>> Eindruck ensteht, daß eine Kurve über der anderen liegt. Ferner müssen
>> die Kurven teilweise mit Pfeilen versehen werden, um die Orientierung
>> anzuzeigen.
>> Gibt's dafür schon was geeignetes?
>
> Da würde ich MetaPost empfehlen, ggf. mit MetaObj. Da gibt es z.B. die
> Möglichkeit, die Linien gleich doppelt zu zeichnen, womit sich der
> zersägen-Effekt erzeugen lassen müßte.

Nein, eben nicht. Das geht nur für ganz bestimmte Ausschnitte von
manchen Knotendiagrammen (die nur ganz unwesentlich verknoten sind).

Was man mit Metapost allerdings machen kann, ist Schnittpunkte von
Pfaden ausrechnen und diese dann dort auseinandersägen
(intersectiontimes, cutbefore, cutafter usw.). Das ist schon einmal
das notwendige Handwerkszeug, und ich kann mir ein paar unangenehme
Details geometrischer Datenverarbeitung ersparen. Allerdings hatte ich
das eher als Notnagel gedacht. 8-)

Joachim Schlosser

unread,
Apr 5, 2005, 1:37:36 PM4/5/05
to
Florian Weimer schrieb:

>>Möglichkeit, die Linien gleich doppelt zu zeichnen, womit sich der
>>zersägen-Effekt erzeugen lassen müßte.
> Nein, eben nicht. Das geht nur für ganz bestimmte Ausschnitte von
> manchen Knotendiagrammen (die nur ganz unwesentlich verknoten sind).

Schade, dann setzt MetaPost die doppelten wohl auch in zwei
Durchgängen, was den Effekt kaputt macht.

> Was man mit Metapost allerdings machen kann, ist Schnittpunkte von
> Pfaden ausrechnen und diese dann dort auseinandersägen
> (intersectiontimes, cutbefore, cutafter usw.). Das ist schon einmal
> das notwendige Handwerkszeug, und ich kann mir ein paar unangenehme
> Details geometrischer Datenverarbeitung ersparen. Allerdings hatte ich
> das eher als Notnagel gedacht. 8-)

Wenn Du es fertig hast, kannst Du ja die Lösung hier oder als Paket
veröffentlichen, würde mich interessieren.

Joachim
--
Joachim Schlosser
(The e-mail address is fully repliable.)
http://schlosser.info

Sven Hartge

unread,
Apr 5, 2005, 3:27:25 PM4/5/05
to
Florian Weimer <f...@deneb.enyo.de> wrote:

> Ich muß einen ganzen Haufen Knotendiagramme produzieren (oder genauer:
> Ausschnitte von orientierten Link-Diagrammen). Bislang verwende ich
> Xy-pic, aber das sieht, wenn man nicht gehörigen Aufwand treibt und
> lauter magische Zahlen einstreut, nicht so toll aus -- oder die
> Darstellung ist gar nicht möglich (weil die Diagramme nicht das sind,
> was in der Literatur mitunter "reachable" genannt wird).

Klingt nach graphviz. Seit neustem sogar mit brauchbarer Lizenz zu
haben.

--
Sven Hartge -- professioneller Unix-Geek und alltime Nerd
Meine Gedanken im Netz: http://sven.formvision.de/blog/

Andreas Volz

unread,
Apr 6, 2005, 3:06:09 AM4/6/05
to
Am Tue, 05 Apr 2005 16:57:34 +0200 schrieb Florian Weimer:

> [...]


>
> Gibt's dafür schon was geeignetes?

Hi,

In Blender lassen sich verschiedenste Arten von Kurven
(z.B.Bézierkurven) zeichnen. Zudem hat es eine programmierbare Python
Schnittstelle. Übereinander zeichnen kannst du evtl. mit Hilfe der
z-Achse. Als Ausgabeformat bieten sich diverse 2D- oder 3D-Formate
an. Bestimmt lässt sich eines in latex nutzen oder mit Hilfe eines
dritten Programmes entsprechend konvertieren. Vielleicht gibt es
irgendwo im Netz auch einen EPS-Exporter für Blender. Ansonsten könnte
man auch ein Exporter-Modul schreiben um EPS zu erzeugen. Ist halt
abhängig davon wie dringend man es braucht und wieviel Zeit man
investieren will. Vielleicht hilft das weiter...

Gruß
Andreas

Rolf Niepraschk

unread,
Apr 6, 2005, 3:38:28 AM4/6/05
to
Florian Weimer wrote:
> Ich muß einen ganzen Haufen Knotendiagramme produzieren (oder genauer:
> Ausschnitte von orientierten Link-Diagrammen). Bislang verwende ich
> Xy-pic, aber das sieht, wenn man nicht gehörigen Aufwand treibt und
> lauter magische Zahlen einstreut, nicht so toll aus -- oder die
> Darstellung ist gar nicht möglich (weil die Diagramme nicht das sind,
> was in der Literatur mitunter "reachable" genannt wird).
>

Vielleicht hilft

"PyX - Python graphics package"
==> http://pyx.sourceforge.net/

...Rolf

Jens-Uwe Morawski

unread,
Apr 6, 2005, 6:03:23 AM4/6/05
to
Am Tue, 05 Apr 2005 19:33:46 +0200 schrieb Florian Weimer:

> * Joachim Schlosser:

>> Da würde ich MetaPost empfehlen, ggf. mit MetaObj. Da gibt es z.B. die
>> Möglichkeit, die Linien gleich doppelt zu zeichnen, womit sich der
>> zersägen-Effekt erzeugen lassen müßte.
>
> Nein, eben nicht. Das geht nur für ganz bestimmte Ausschnitte von
> manchen Knotendiagrammen (die nur ganz unwesentlich verknoten sind).

Kannst du mal einen Verweis (Link) auf ein entsprechend
komplexes Diagramm (Grafik) geben. Würd' mich einfach nur
interessieren...

j.

Herbert Voss

unread,
Apr 6, 2005, 7:13:20 AM4/6/05
to
Herbert Voss wrote:

> lässt sich leicht mit PSTricks erreichen, wenn du die
> Kurven der Reihe nach zeichnen kannst, also die hinterste
> zuerst.

\documentclass{article}
\usepackage{pstricks}

\begin{document}

\psbezier[linewidth=2pt,linecolor=red](1,1)(3,-3)(5,1)
\psbezier[border=2pt,linewidth=2pt,linecolor=blue](1,-1)(3,3)(5,-1)

\end{document}

Florian Weimer

unread,
Apr 6, 2005, 1:29:29 PM4/6/05
to
* Jens-Uwe Morawski:

<http://www2.math.uic.edu/~kauffman/>, insbesondere die Diagramme
unten.

Florian Weimer

unread,
Apr 6, 2005, 1:31:46 PM4/6/05
to
* Herbert Voss:

>> lässt sich leicht mit PSTricks erreichen, wenn du die
>> Kurven der Reihe nach zeichnen kannst, also die hinterste
>> zuerst.

Das ist nicht der Fall, sonst ergibt sich niemals das, was
umgangssprachlich als Knoten bezeichnet wird.

> \psbezier[linewidth=2pt,linecolor=red](1,1)(3,-3)(5,1)
> \psbezier[border=2pt,linewidth=2pt,linecolor=blue](1,-1)(3,3)(5,-1)

Im allgemeinen muß die rote Kurve sowohl über als auch unter der
blauen liegen. 8-(

Jens-Uwe Morawski

unread,
Apr 6, 2005, 2:08:43 PM4/6/05
to
Am Wed, 06 Apr 2005 19:29:29 +0200 schrieb Florian Weimer:

> * Jens-Uwe Morawski:


>> Kannst du mal einen Verweis (Link) auf ein entsprechend
>> komplexes Diagramm (Grafik) geben. Würd' mich einfach nur
>> interessieren...
>
> <http://www2.math.uic.edu/~kauffman/>, insbesondere die Diagramme
> unten.

Ahh, jetzt verstehe ich; ist ja echt augenkrebsverdächtig ;-)

j.

Markus Göbelsmann

unread,
Apr 23, 2005, 9:04:20 AM4/23/05
to
Hallo

ist es unter TeX möglich, einfach einen Zeitstrahl zu erstellen. Ich
möchte Daten mit den entsprechenden Ereignissen auf einer Linie mit den
relativen Entfernungen zueinander darstellen (wie ein Zeitstrahl eben ;-) )
Falls es diese Möglichkeit nicht unter Latex gibt es es mit einem
anderen Programm einfach möglich ?

Vielen Dank
Markus Göbelsmann

Markus Göbelsmann

unread,
Apr 23, 2005, 9:18:58 AM4/23/05
to
Hallo

ist es unter TeX möglich, einfach einen Zeitstrahl zu erstellen. Ich
möchte Daten mit den entsprechenden Ereignissen auf einer Linie mit den

relativen Entfernungen zueinander darstellen (wie ein Zeitstrahl eben )

Martin Baumgärtner

unread,
Apr 23, 2005, 1:59:32 PM4/23/05
to
Markus Göbelsmann schrieb:

Hallo Markus,

kennst Du das Programm xfig? Das ist ein Vektorzeichenprogramm und hat
eine sehr gute Schnittstelle zu LaTeX (www.xfig.org). Die
Benutzerführung ist anfänglich zwar etwas ungewohnt, nach einer
kleineren Eingewöhnungsphase möchtest Du jedoch nicht mehr darauf
verzichten.

Gruß, Martin

Roman Stalla

unread,
Apr 23, 2005, 2:59:59 PM4/23/05
to
Markus Göbelsmann schrieb:

> ist es unter TeX möglich, einfach einen Zeitstrahl zu erstellen.

<http://www.tug.org/tex-archive/macros/latex209/contrib/misc/timeline.sty>

erstellt zwar keine Linie, aber die Punkte haben proportionalen
Abstand entsprechend der Zeitangabe.


Roman STALLA


--
Die schärfsten Kritiker der Elche
waren früher selber welche.

(F.W. Bernstein)

Dirk Pfeilsticker

unread,
Apr 23, 2005, 9:16:59 PM4/23/05
to
Martin Baumgärtner wrote:

> kennst Du das Programm xfig? Das ist ein Vektorzeichenprogramm und hat
> eine sehr gute Schnittstelle zu LaTeX (www.xfig.org).

Ein anderes Vektorzeichenprogramm ist wäre Inkscape. Dies macht einen ganz
guten Eindruck. Ein exportieren in eps, png, usw. ist möglich.


Gruß
Dirk

Wolfgang Krietsch

unread,
Apr 24, 2005, 9:11:23 AM4/24/05
to
Roman Stalla wrote:
><http://www.tug.org/tex-archive/macros/latex209/contrib/misc/timeline.sty>
>
>erstellt zwar keine Linie, aber die Punkte haben proportionalen
>Abstand entsprechend der Zeitangabe.

Mit \optrule zeichet es auch eine (senkrechte) Linie. Aber so richtig schön
ist's irgendwie nicht.

Gefunden (aber noch nicht getestet) habe ich noch
http://www.dcs.st-and.ac.uk/~tws/resources/latex/timeline.zip


Bye

woffi

--
It's so simple to be wise. Just think of something stupid
to say and say the opposite.
- Sam Levenson

Herbert Voss

unread,
Apr 24, 2005, 12:58:00 PM4/24/05
to
Markus Göbelsmann wrote:

z.B. mit PSTricks

Herbert


\documentclass[12pt]{article}
\usepackage{pst-grad}
\usepackage{pstricks-add}
\SpecialCoor
\newsavebox\TBox
\pagestyle{empty}
\psset{gradbegin=white,gradend=lightgray}
\newcommand\BoxText[3][3cm]{%
\savebox\TBox{\parbox{#1}{#3}}
\rput[t](#2){\psframebox[fillstyle=gradient]{\usebox\TBox}}%
\pnode(#2|0,0){A}\pnode(#2){B}
\ncline{->}{A}{B}%
}

\begin{document}

\psset{xunit=0.05cm}
\begin{pspicture}(1900,0.25)(2200,-10)
\psaxes[yAxis=false,Dx=50,Ox=1900]{|->}(1900,0)(1900,0)(2200,-10)%
\BoxText{2150,-1}{%
Hier muss jetzt irgendetwas hinkommen, was, weiss ich auch nicht genau}
\BoxText{2088,-4}{%
Hier muss jetzt irgendetwas hinkommen, was, weiss ich auch nicht genau}
\BoxText{1921,-1}{%
Hier muss jetzt irgendetwas hinkommen, was, weiss ich auch nicht genau}
\end{pspicture}

\end{document}

Markus Göbelsmann

unread,
Apr 25, 2005, 2:53:54 PM4/25/05
to
Hallo Herbert und alle anderen,
vielen Dank.

Mit PSTricks geht es ganz gut und sieht auch gut aus.
Lassen sich auch Tage damit realisieren, also von z.B 1518 bis 1521 mit
Punkten am 12.10.1518 und so weiter?

Vielen Dank
Markus

Herbert Voss

unread,
Apr 25, 2005, 3:29:27 PM4/25/05
to
Markus Göbelsmann wrote:
> Hallo Herbert und alle anderen,
> vielen Dank.
>
> Mit PSTricks geht es ganz gut und sieht auch gut aus.
> Lassen sich auch Tage damit realisieren, also von z.B 1518 bis 1521 mit
> Punkten am 12.10.1518 und so weiter?

sicher, aber entweder wählst du gleich Tage als x-Einheit
oder eben das Jahr und rechnest einfach 15.10. in Jahre
um und beginnst der EInfachheit halber bei 0, was dann
dem 1.1.1518 entspricht. Der 15.10.1518 ist dann eben
ungefähr 0.767. Bezihungsweise der 10.2.1519 dann 1.1123
1+41/365

HErbert


\documentclass[12pt,ngerman]{article}
\usepackage{pst-grad}
\usepackage{pstricks-add}
\usepackage{babel}


\SpecialCoor
\newsavebox\TBox
\pagestyle{empty}
\psset{gradbegin=white,gradend=lightgray}

\newcommand\BoxText[4][3cm]{%
\savebox\TBox{\parbox{#1}{#4}}


\rput[t](#2){\psframebox[fillstyle=gradient]{\usebox\TBox}}%
\pnode(#2|0,0){A}\pnode(#2){B}
\ncline{->}{A}{B}%

\uput*{0.5cm}[-90](A){\footnotesize #3}%
}
\begin{document}

\begin{pspicture}(0,0.25)(2.5,-10)
\psset{xunit=5}
\psaxes[yAxis=false,Ox=1518]{|->}(0,0)(2.5,-10)%
\BoxText[4cm]{1.1123,-5.5}{10.2.}{%


Hier muss jetzt irgendetwas hinkommen, was, weiss ich auch nicht genau}

\BoxText{.767,-2}{15.10.}{%

0 new messages