PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplot diagramm verschießt innerhalb eines tikz node



Hoste
18-02-2011, 10:08
Hi,

dieses Forum hat mir immer sehr geholfen, ich dachte schon ich bin ganz gut in LaTeX, bis gestern. :(

Ich will ein Plakat erzeugen mit farbigen Kästen, dafür nehme ich Tikz nodes innerhalb einer multicolumns Umgebung. Klappt alles, außer wenn ich in einen node mit vorgeschriebener text width=\columnwidth ein pgfplot diagramm setzen will.

Hier mein Minibeispiel, mit documentclass a0poster. Bei der ersten Box habe ich dilettantisch was hingepfuscht (\\[xxem]) :D und das Diagramm in einen node ohne text width=xxx gesetzt, muss aber immer die Abstände kontrollieren. Bei der zweiten Box ist der Fehler, aber irgendwie so müsste es doch eigentlich gehen. Vielleicht hat jemand ne Idee.


\documentclass{a0poster}

\usepackage[UKenglish]{babel}
\usepackage[latin1]{inputenc} % ß, ä, ö, ü
\usepackage[OT1]{fontenc} % font coding
\usepackage{helvet}
\usepackage{multicol}
\usepackage{pgfplots} % diagramme
\usepackage{tikz} % tikz figures
\usetikzlibrary{positioning} % advanced node positioning

\tikzstyle{header}=[draw, line width=5pt, text width=\columnwidth-.25\columnsep-2em, font=\huge \bfseries, inner ysep=1em, inner xsep=1em,
minimum height=4em]
\tikzstyle{box}=[below= of header, text width=\columnwidth-.25\columnsep-2em, text justified, font=\large, draw, line width=5pt,
inner ysep=1em, inner xsep=1em]


\setlength{\columnsep}{1cm} %columndistance
\setlength{\columnseprule}{0pt} %vertical line thickness

\begin{document}

\begin{multicols}{3}

%BOX%hingepfuscht%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{minipage}{\columnwidth}
\begin{tikzpicture} [node distance=0mm and 0mm]
\node(header)[header]{Methods};
\node(box)[box]{
Bla bla bla bla bla bla bla bla bla bla bla \\[16em] %%HERE Work-around
};
\node[below=-20em of box]{ %%HERE Work-around
\begin{tikzpicture}
\pgfplotsset{width=0.4\columnwidth, compat=1.3}
\begin{semilogxaxis}[title=Title, legend pos=outer north east,
legend style={cells={anchor=west}},xlabel={Shear rate (1/s)},
ylabel={Viscosity (Pa\,s)}]
\addplot[black, solid, no marks, domain=0.01:1e5, samples=100]{0.00345+(0.056-0.00345)*(1+(3.313*x)^2)^((0.3568-1)/2)};
\addlegendentry{Carreau}
\addplot+[black, dashed, no marks, domain=0.01:647, samples=100]{0.0148*x^(0.775-1)};
\addlegendentry{Power-law}
\addplot+[black, dashed, no marks, domain=647:1e5, samples=100]{0.00345};
\end{semilogxaxis}
\end{tikzpicture}
};
\end{tikzpicture}
\end{minipage}

%BOX%wie es sein sollte%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%
\begin{minipage}{\columnwidth}
\begin{tikzpicture} [node distance=0mm and 0mm]
\node(header)[header]{Methods};
\node(box)[box]{
Bla bla bla bla bla bla bla bla bla bla bla \\
\begin{tikzpicture}
\pgfplotsset{width=0.4\columnwidth, compat=1.3}
\begin{semilogxaxis}[title=Title, legend pos=outer north east,
legend style={cells={anchor=west}},xlabel={Shear rate (1/s)},
ylabel={Viscosity (Pa\,s)}]
\addplot[black, solid, no marks, domain=0.01:1e5, samples=100]{0.00345+(0.056-0.00345)*(1+(3.313*x)^2)^((0.3568-1)/2)};
\addlegendentry{Carreau}
\addplot+[black, dashed, no marks, domain=0.01:647, samples=100]{0.0148*x^(0.775-1)};
\addlegendentry{Power-law}
\addplot+[black, dashed, no marks, domain=647:1e5, samples=100]{0.00345};
\end{semilogxaxis}
\end{tikzpicture}
};
\end{tikzpicture}
\end{minipage}

\end{multicols}
\end{document}

bobmalaria
18-02-2011, 13:32
hi,

der fehler liegt bei


text width=\columnwidth-.25\columnsep-2em in denier box definition.
irgendwas daran scheint pdfplots nicht zu gefallen, bzw die falsche laenge wird verwendet und dadurch sieht das diagramm so komisch aus.

wie man das zuruecksetzt muss ich mal schauen. vielleicht hat ja noch jemand anderes eine eingebung.

gruss

EDIT:

und schon kam die eingebung. text width=


\documentclass{a0poster}

\usepackage[UKenglish]{babel}
\usepackage[latin1]{inputenc} % ß, ä, ö, ü
\usepackage[T1]{fontenc} % font coding
\usepackage{helvet}
\usepackage{multicol}
\usepackage{pgfplots} % diagramme
\usepackage{tikz} % tikz figures
\usetikzlibrary{positioning} % advanced node positioning

\tikzstyle{header}=[draw, line width=5pt, text
width=\linewidth-.25\columnsep-2em, font=\huge \bfseries, inner ysep=1em,
inner xsep=1em,
minimum height=4em]

\tikzstyle{box}=[
text width=\linewidth-.25\columnsep-2em,
text justified,
font=\large,
draw,
line width=5pt,
inner ysep=1em,
inner xsep=1em]


\setlength{\columnsep}{1cm} %columndistance
\setlength{\columnseprule}{0pt} %vertical line thickness

\begin{document}

\begin{multicols}{3}

%BOX%hingepfuscht%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%
\begin{minipage}{1\columnwidth}
\begin{tikzpicture} [
node distance=0mm and 0mm
]
\node(headerbox)[header,baseline]{Methods};
\node(firstbox)[box,below=of headerbox]{
Bla bla bla bla bla bla bla bla bla bla bla \\%[16em] %%HERE Work-around
};
\node[box,below=of firstbox]{
%%HERE Work-around
\begin{tikzpicture}[text width=]
% \draw (0,0)-- (3,0);
\pgfplotsset{width=.5\linewidth, compat=1.3,text width=.3\columnwidth}
\begin{semilogxaxis}[title=Title, legend pos=outer north east,
legend style={cells={anchor=west}},xlabel={Shear rate (1/s)},
ylabel={Viscosity (Pa\,s)}]
\addplot[black, solid, no marks, domain=0.01:1e5,
samples=100]{0.00345+(0.056-0.00345)*(1+(3.313*x)^2)^((0.3568-1)/2)};
\addlegendentry{Carreau}
\addplot+[black, dashed, no marks, domain=0.01:647,
samples=100]{0.0148*x^(0.775-1)};
\addlegendentry{Power-law}
\addplot+[black, dashed, no marks, domain=647:1e5, samples=100]{0.00345};
\end{semilogxaxis}
\end{tikzpicture}
};
\end{tikzpicture}
\end{minipage}
\end{multicols}
\end{document}

das tut zumindest nach dem ersten test ganz gut

Hoste
18-02-2011, 15:51
Super Vielen Dank.

Also es scheint so das \columnwidth nicht funtioniert. Habe alles auf \linewidth umgestellt und dann kann man einfach in jedem node Diagramme einfügen und hinter einander seinen code schreiben.
Mit:



...
\begin{tikzpicture}[text width=, inner ysep=0.25ex, inner xsep=0.25ex]
\pgfplotsset{width=.4\linewidth, compat=1.3}
...


klappt alles und ich brauche keinen zusätzlichen node den ich per Hand durch die Gegend schieben muss. :) Das inner xsep und ysep brauche ich nur damit das Diagramm schön kompakt bleibt.