Seite 1 von 1

Coordinates und Timing in PGF Plots kombinieren

Verfasst: Mo 20. Aug 2012, 11:19
von pilzbug
Hallo zusammen,

ich würde gerne eine Grafik mit pgfplots bzw. tikz erstellen eine Grafik zu erstellen, die zum einen ein Timingdiagramm wie in http://www.texample.net/tikz/examples/timing-diagram/ enthält und zum anderen einen coordinates plot.
Im Endeffekt sollen die Koordinaten Plots usammen über dem Timingdiagramm liegen.
D.h. von oben gesehen kommt zunächst der Koordinatenplot mit allen Plots
\addplot coordinates {
(0,0)
(2,4)
(4,-2)
(6,2)
};
\addplot coordinates {
(0,0)
(4,4)
(5,0)
};
und darunter dann am gleichen Gitter angeordnet das Timing. Hier soll einmal die Clock und dann drei Nachrichtenports (Zeilen wie inst_addr. oder auch req_addr. im Beispiel) kommen.

Hat dazu vllt jemand eine Idee.

Herzlichen Dank jetzt schon!

Verfasst: Mo 20. Aug 2012, 11:41
von Apfeltasche
Den Quellcode für das Timingdiagramm hast du ja, das sollte also kein Problem sein dieses entsprechend anzupassen, oder?
Ansonsten ist zu bemerken, dass du die Plots ja in eine Axis-Umgebung innerhalb einer tikz-figure einfügst.
Nach oder vor dieser Axis Umgebung kannst du beliebigen Tikz-Code ausführen, also auch dieses Timingdiagramm.

Zeig doch einfach mal, was du bisher gemacht hast. Am besten mit einem Minimalbeispiel.

Verfasst: Mo 20. Aug 2012, 12:13
von pilzbug
Hi,

danke für die Antwort. Ich habe nun mit dem
\usepackage{tikz-timing}
Paket rum probiert und Folgendes produziert:
\begin{tikzpicture}
\begin{axis}[%
xlabel=time\,/\,$s$,
xmax=6,
xmin=0,
ylabel= credit\,/\,bits
]
\addplot coordinates {
(0,0)
(2,4)
(4,-2)
(6,2)
};
\addplot coordinates {
(0,0)
(4,4)
(5,0)
};
\legend{%
Credit class A,
Credit class B,
}
\end{axis}
\timing at (0,-1.3) {4Z6D{$\ell_{gap}$}4D{MTU$_{A}$}Z};
\timing at (0,-1.8) {14ZD};
\timing at (0,-2.3) {4D{MTU$_{LP}$}Z};
\end{tikzpicture}
Mein Hauptproblem ist, dass die Axis und das Timing darunter nicht gleich ausgerichtet ist. Ich will, dass die beiden Teile an der gleichen x-Achsen Skala ausgerichtet sind...
Das ganze soll später mal aussehen wie das PDF im Anhang.

Besten Dank

Verfasst: Mo 20. Aug 2012, 22:13
von feuersaenger
Hi,

Du kannst auf jeden Fall die \timing befehle direkt in die Achse reinschreiben - und dann am Besten mittels 'axis cs' ausrichten.

Das koennte dann so aussehen:
\begin{tikzpicture}
\begin{axis}[%
xlabel=time\,/\,$s$,
xmax=6,
xmin=0,
ylabel= credit\,/\,bits,
]
\timing at (axis cs:0,2) {4Z6D{$\ell_{gap}$}4D{MTU$_{A}$}Z};
\timing at (axis cs:0,1) {14ZD};
\timing at (axis cs:0,-2) {4D{MTU$_{LP}$}Z};

\addplot coordinates {
(0,0)
(2,4)
(4,-2)
(6,2)
};
\addplot coordinates {
(0,0)
(4,4)
(5,0)
};
\legend{%
Credit class A,
Credit class B,
}
\end{axis}
\end{tikzpicture}
das 'axis cs' erlaubt die identifikation innerhalb des pgfplots koordinatensystems.

Ich weiss nicht, wie \timing die horizontale ausrichtung macht... eventuell hilft da 'axis direction cs' und/oder die option 'disabledatascaling' in pgfplots weiter.

Falls Du im Grunde gar keine Achsenbeschriftungen haben willst (oder nur symbolisch wie in der Skizze), dann koenntest Du das auch komplett mit bordmitteln von TikZ machen. Das hat auch ein \draw plot coordinates {...}; Befehl, der fuers plotten nicht so dolle ist, aber fuer Skizzen schon sehr gute Arbeit leistet.

Mit liebem Gruss

Christian