PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafiken und Graphen mit tikz



ophidian
24-08-2010, 19:07
Hallo,

irgendwie werde ich mit tikz nicht richtig warm und habe deshalb große Probleme folgende Grafiken zu erstellen.

http://a.imageshack.us/img691/8357/foto2og.jpg

http://a.imageshack.us/img842/2019/foto3m.jpg

Gleiches gilt für das Erstellen eines Graphen. Kann ich das auch mit tikz machen oder benutz ich dafür lieber pgfplots? Auf jeden Fall bin ich auch hier nicht über ein paar kläglich gescheiterte Versuche hinaus gekommen:(

http://a.imageshack.us/img840/2939/foto1jn.jpg

Wäre super nett, wenn mir jemand dabei helfen könnte.

Vielen Dank schon mal im Voraus!

bobmalaria
24-08-2010, 19:15
hi,

die screenshots sind ja ganz nett, aber es wäre auch gut gewesen wenn du in einem minimalbeispiel deinen kläglichen versuch gezeigt hättest und dazu noch die geneuaen fehlermeldungen und probleme genannt hättest.

die ersten beiden grafiken sind mit tikz zu machen. da es nur ein paar boxen sind ist das nicht zu schwer würde ich sagen.

einen graphen würde ich mit pfgplots machen. gerade wenn es nur wenige punkte sind wie in deinem beispiel, dann kannst du praktisch ein beispiel aus der anleitung per copy und paste einfügen und musst nur die daten ersetzen.

wenn später noch keiner ein beispiel gepostet hat, dann bastel ich was wenn ich wieder zu hause bin.

gruss

bobmalaria
25-08-2010, 13:09
hi,

ich habe da mal was gebastelt. dabei ist anzumerken, dass es bestimmt bessere und auch schnellere methoden gibt um zum ziel zu kommen. ich habe z.b. keine matrix verwendet sondern alle eckpunkte selbst definiert. außerdem habe ich versucht mich möglichst zu den koordinaten zu rechnen damit bei änderungen nicht so viele koordinaten per hand justiert werden müssen.

ich hoffe das hilft dir ein wenig

gruss


\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{patterns}

\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
%Arbeit Sparen um nodes zu zeichnen
\foreach \x in {0,10}
\foreach \y in {0,5}
{
%Zeichnen aller Linienschnittpunkte
\node (punkt\x-\y) at (\x,\y) {};
}
%Zeichnen der gestichelten Mittellinien
\foreach \x in {2,4,...,8}
{
\draw[dashed] (\x,0) -- (\x,5);
}
%Einfügen des Textes in die Spalten
\foreach \x/\t in {1/text1,3/text2,5/text3,7/text4,9/text5}
{
\node[rotate=90] at (\x,2.5) {\t};
}
%Äußerer Rahmen durch verbinden der Punkte
\draw (punkt0-0.center) -- (punkt10-0.center);
\draw (punkt0-0.center) -- (punkt0-5.center);
\draw (punkt0-5.center) -- (punkt10-5.center);
\draw (punkt10-0.center) -- (punkt10-5.center);
\end{tikzpicture}


\begin{tikzpicture}
%Arbeit Sparen um nodes zu zeichnen
\foreach \x in {0,4,...,12}
\foreach \y in {0,4}
{
%Zeichnen aller Linienschnittpunkte
\node (punkt\x-\y) at (\x,\y) {};
}
%Äußerer Rahmen durch verbinden der Punkte
\draw (punkt0-0.center) -- (punkt12-0.center);
\draw (punkt0-0.center) -- (punkt0-4.center);
\draw (punkt0-4.center) -- (punkt12-4.center);
\draw (punkt12-0.center) -- (punkt12-4.center);
%Zwischenlinien
\draw (punkt4-0.center) -- (punkt4-4.center);
\draw (punkt8-0.center) -- (punkt8-4.center);

%Die boxen mit der Füllung

%links
\node[shape=rectangle,draw,minimum width=0.5cm,minimum height=1cm,pattern=north east lines,anchor=east] at ($(punkt4-0)!0.6!(punkt4-4)$) {};

%rechts
\node[shape=rectangle,draw,minimum width=0.5cm,minimum height=1cm,pattern=north east lines,anchor=west] at ($(punkt8-0)!0.4!(punkt8-4)$) {};

%Einfügen des Textes in die Spalten
\foreach \x/\t in {2/text1,6/text2,10/text3}
{
\node at (\x,2) {\t};
}

%Einfügen der kleinen Rechtecke als nodes auf halebem weg zwischen den vorher
%erstellten punkten
\node[draw,shape=rectangle,fill=black] (p1) at ($(punkt0-0)!0.5!(punkt4-0)$) {};
%Text nebendran
\node at ($(p1) + (0.6,-0.3)$) {Text};
\node[draw,shape=rectangle,fill=black] (p2) at ($(punkt4-0)!0.5!(punkt8-0)$) {};
%Text nebendran
\node at ($(p2) + (0.6,-0.3)$) {Text};
\node[draw,shape=rectangle,fill=black] (p3) at ($(punkt8-0)!0.5!(punkt12-0)$) {};
%Text nebendran
\node at ($(p3) + (0.6,-0.3)$) {Text};

%Der Kreis mit Text
\node[shape=circle,draw,minimum width=2cm] (kreis) at ($(p2) - (0,5)$) {Inhalt};
%Koordinate auf Halbem Weg zwischen Box p2 und Kreis
%Zum einfacheren Verbinden der Linen
\coordinate (hilfsko) at ($(p2)!0.4!(kreis)$);
%Und nochmal auf 2/3 des weges
\coordinate (hilfsko2) at ($(p2)!0.66!(kreis)$);

%Erstellen der kleinen box unten rechts
\node[shape=rectangle,draw,minimum width=2cm,minimum height=1cm,anchor=west] (rechteck) at ($(hilfsko2) + (4,0)$) {Text};
%und das kleine rechteck auf dem rechteck
\node[draw,shape=rectangle,fill=black] at (rechteck.west) {};
%und etwas text in der nähe
\node at ($(rechteck.west) + (-0.7,0.3)$) {Text};

%Verbinden er linien über ecken
\draw (p1.south) |- (hilfsko.west);
\draw (p3.south) |- (hilfsko.east);
\draw (p2.south) -- (kreis.north);
\draw (hilfsko2) -- (rechteck.west);


\end{tikzpicture}

\begin{tikzpicture}
\begin{axis}[
ylabel={Kosten in Tsd.},
xlabel={Monate}
]
\addplot[blue, mark=*] coordinates {
(1,8000)
(3,10000)
(4,9000)
(5,15000)
};
\addplot[red, mark=square*] coordinates {
(1,5000)
(3,13000)
(4,9500)
(5,14200)
};
\end{axis}
\end{tikzpicture}


\end{document}

ophidian
28-08-2010, 12:59
Super! Danke!

Die Funktionsweise von tikz hab ich jetzt ungefähr verstanden. Eine Frage habe ich aber noch zu dem zweiten Bild. Wie komm ich zu den gestrichelten Linien bei den schraffierten Rechtecken?

Den Graphen bekomm ich allerdings auch nicht mit dem Hilfsbeispiel nur annähernd so hin wie ich es gern hätte. Die pgfplots-Anleitung hat mir da bisher auch nicht weiter geholfen, viel zu komplex und viel zu wenig einfache, grundlegende Beispiele insbesondere was die Formatierung der Achsen angeht. Aber wahrscheinlich bin ich auch einfach zu blind.

Prinzipiell will ich den Graphen so wie ich ihn gezeichnet habe. Das heisst:

- die X-Achse soll mit 1,2,3,4,... und nicht mit 2,4,6,8 bezeichnet werden (im Idealfall allerdings mit den Monatsnamen, aber das scheint wohl nicht so ohne weiteres möglich zu sein!?)
- nur eine x-Achse und nur eine y-Achse (also ohne die parallel verlaufenden Achsen)
- die Beschriftungen der X-Achsen (egal ob numerisch oder als Text) zwischen den Abschnittsmarkierungen
- Titel der Y-Achse über der Y-Achse, Titel der X-Achse rechts von der X-Achse

rais
28-08-2010, 20:52
Moin moin,

Wie komm ich zu den gestrichelten Linien bei den schraffierten Rechtecken?

etwa so vllt


%links
\node[shape=rectangle,draw,minimum width=0.5cm,minimum height=1cm,pattern=north east lines,anchor=east] at ($(punkt4-0)!0.6!(punkt4-4)$) {};
\draw[white,very thick,dashed] ($(punkt4-0)!0.6!(punkt4-4)$) ++(0,-0.5) -- +(0,1);
%rechts
\node[shape=rectangle,draw,minimum width=0.5cm,minimum height=1cm,pattern=north east lines,anchor=west] at ($(punkt8-0)!0.4!(punkt8-4)$) {};
\draw[white,very thick,dashed] ($(punkt8-0)!0.4!(punkt8-4)$) ++(0,-0.5) -- +(0,1);



Den Graphen bekomm ich allerdings auch nicht mit dem Hilfsbeispiel nur annähernd so hin wie ich es gern hätte. Die pgfplots-Anleitung hat mir da bisher auch nicht weiter geholfen, viel zu komplex und viel zu wenig einfache, grundlegende Beispiele insbesondere was die Formatierung der Achsen angeht.

Ich versteh nicht ganz, was Du meinst ... die pgfplots-Doku wimmelt doch nur von Beispielen ...


- nur eine x-Achse und nur eine y-Achse (also ohne die parallel verlaufenden Achsen)



\begin{axis}[
axis x line=bottom,
axis y line=left,
ylabel={Kosten in Tsd.},

MfG