PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Grafik mit TikZ



logitprobit
24-01-2009, 10:05
Hallo!
Ich habe eine Grafik mit TikZ erstellt, aber ich habe noch ein kleines Problem. Die nach links verschobene Kurve geht aus dem Diagramm "raus". Was kann ich machen, damit alle drei Kurven ungefähr "auf der gleichen Höhe" sind? Hier ist mein Programm:

\begin{center}
\begin{tikzpicture}[
scale=2.0,
D/.style={black, thick},
axis/.style={very thick, ->, >=stealth', line join=miter},
important line/.style={red,thick},
%dashed line/.style={dashed, thin},
every node/.style={color=black},
dot/.style={circle,fill=black,minimum size=4pt,inner sep=0pt,
outer sep=-1pt},
]
% axis
\draw[axis,<->] (4.5,0) node(xline)[right] {$Z$} -|
(0,4.5) node(yline)[above] {$\tau / p^d$};

\draw[important line] (0,2.0) coordinate (a_1) node[left] {$\tau / p^{d}_{0}$} -- (4.0,2.0) coordinate (a_2);
\draw[D] (0.8,4.0) coordinate (b_1) parabola[bend at end]
(4.0,0.3) coordinate (b_2) node[right] {$D_0$};

\draw[xshift=.6cm, yshift=0.5cm, D] (0.8,4.0)
parabola[bend at end] (4.0,0.3)
node[right] {$D_2$};
\draw[xshift=-0.6cm, yshift=-0.5cm, D] (0.8,4.0)
parabola[bend at end] (4.0,0.3) node[right] {$D_1$};

\node[dot,label=above:$A$] at (1.85,2.0) (int1) {};
\draw[dashed] (1.85,0) node[below] {$Z_0$} -| (int1);


\node[dot,label=above:$B$] at (0.93,2.0) (int2) {};
\draw[dashed] (0.93,0) node[below] {$Z_1$} -| (int2);

\node[dot,label=above:$C$] at (2.8,2.0) (int3) {};
\draw[dashed] (2.8,0) node[below] {$Z_2$} -| (int3);

\draw[->, thick, black, >=stealth']
($(int1)+1/2*(-1.,1)$) -- ($(int2)+1/2*(-0.3,1)$);
\draw[->, thick, black, >=stealth']
($(int1)+1/2*(-0.3,1)$) -- ($(int3)+1/2*(-0.9,1)$);

\end{tikzpicture}
\end{center}

Ich wäre dankbar, wenn sich jemand mit einem Vorschlag melden würde!

bobmalaria
24-01-2009, 11:59
hi,


erstmal gibt es im editorenster wenn du eine nachricht verfasst oben links das raute symbol #, das solltest du anklicken um deinen code in diese umgebung zu kopieren. des weiteren solltest du ein minimalbeispiel machen.

ich musste jetzt erst basteln und dinge wie tikzlibrary calc nachladen......:mad:
und woher kommt stealth', das habe ich gelöscht da es zu fehlern führt.

reicht es nicht wenn du in deinem code die achse verschiebst?


\draw[axis,<->] (4.5,-1) node(xline)[right] {$Z$} -|
(0,4.5) node(yline)[above] {$\tau / p^d$};

krihaa
24-01-2009, 12:44
Hallo,

mit \clip kannst du einen Bereich bestimmen, um den herum alles weggeschnitten wird. Dieses kannst du mit der scope-Umgebung begrenzen. Schau dir mal den Code an und schlag ggf. im pgfmanual nach. Die Punkte A, B und C liegen nicht genau auf den Kurven, das könnte man bestimmt auch noch verbessern.

\documentclass{scrartcl}
\usepackage{tikz}
\usetikzlibrary{calc}
\begin{document}
\begin{center}
\begin{tikzpicture}[
scale=2.0,
D/.style={black, thick},
axis/.style={very thick, ->, >=stealth, line join=miter},
important line/.style={red,thick},
%dashed line/.style={dashed, thin},
every node/.style={color=black},
dot/.style={circle,fill=black,minimum size=4pt,inner sep=0pt,
outer sep=-1pt},
]
% axis
\draw[axis,<->] (4.5,0) node(xline)[right] {$Z$} -| (0,4.5) node(yline)[above] {$\tau / p^d$};
\draw[important line] (0,2.0) coordinate (a_1) node[left] {$\tau / p^{d}_{0}$} -- (4.0,2.0) coordinate (a_2);

\begin{scope}
\clip (0,0) rectangle (5,3.5);
\draw[D] (0.8,4.0) coordinate (b_1) parabola[bend at end]
(4.0,0.3) coordinate (b_2) node[right] {$D_0$};

\draw[xshift=.6cm, yshift=0.5cm, D] (0.8,4.0)
parabola[bend at end] (4.0,0.3)
node[right] {$D_2$};

\draw[xshift=-0.6cm, yshift=-0.5cm, D] (0.8,4.0)
parabola[bend at end] (4.0,0.3);
\node[above right] at (2.8,0) {$D_1$};
\end{scope}

\node[dot,label=above:$A$] at (1.85,2.0) (int1) {};
\draw[dashed] (1.85,0) node[below] {$Z_0$} -| (int1);


\node[dot,label=above:$B$] at (0.93,2.0) (int2) {};
\draw[dashed] (0.93,0) node[below] {$Z_1$} -| (int2);

\node[dot,label=above:$C$] at (2.8,2.0) (int3) {};
\draw[dashed] (2.8,0) node[below] {$Z_2$} -| (int3);

\draw[->, thick, black, >=stealth]
($(int1)+1/2*(-1.,1)$) -- ($(int2)+1/2*(-0.3,1)$);
\draw[->, thick, black, >=stealth]
($(int1)+1/2*(-0.3,1)$) -- ($(int3)+1/2*(-0.9,1)$);

\end{tikzpicture}
\end{center}
\end{document}
PS: stealth' funkioniert bei mir auch nicht, obwohl es im Manual drin steht.

Gruß

logitprobit
24-01-2009, 19:35
Hallo,
vielen Dank für Eure Hinweise! Sie haben mir sehr geholfen :)

Viele Grüße

Stefan_K
26-01-2009, 19:12
Hi,

für stealth' benötigt man:

\usetikzlibrary{arrows}

Viele Grüße,

Stefan