PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pgfplots in subfigures -> caption nicht zentriert



Mat
23-02-2012, 21:08
Hallo,

ich benutze pgfplots in subfigure umgebungen. Das klappt ganz gut bis darauf dass die subcaptions von den pgfplots irgendwie linksbündig dargestellt werden und nicht zentriert unter dem bild so wie es normalerweise in subfigures schön passiert. Weiß jemand rat oder woran das liegen könnte?

Hier ein Minimalbeispiel (die subcaption sollte genau zentriert unter den plots sein und nicht links über die plots ragen)



\documentclass{scrartcl}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{color}
\usepackage{rotating}
\usepackage{longtable}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{mathrsfs}
\usepackage{listings}
\usepackage{amsthm}
\usepackage{listings}
\usepackage{lscape}
\usepackage{subfigure}
\usepackage{pgfplots}

\begin{document}
\begin{figure}[h]
\centering
\subfigure[Eine sehr lange lange lange lange lange caption.]{
\tikzset{every mark/.append style={scale=0.8}}
\pgfplotsset{every axis legend/.append style={scale=0.4,at={(0.54,0.87)},anchor=east},com pat=1.3}
\centering
\begin{tikzpicture}[scale=0.83]
\begin{loglogaxis}
\addplot[color=black] coordinates {
(1,1)
(2,2)
(4,4)
(8,8)
(16,16)
(32,32)
(64,64)
};
\end{loglogaxis}
\end{tikzpicture}
}
\hspace{0.0cm}
\subfigure[Eine sehr lange lange lange lange lange caption.]{
\centering
\begin{tikzpicture}[scale=0.83]
\begin{loglogaxis}
\addplot[color=black] coordinates {
(1,1)
(2,2)
(4,4)
(8,8)
(16,16)
(32,32)
(64,64)
};
\end{loglogaxis}
\end{tikzpicture}
}
\caption{todo..}
\label{fig:example}
\end{figure}


\end{document}

Sepp99
23-02-2012, 22:13
Zunächst würde ich subfigure durch subfig ersetzen, siehe http://www.mrunix.de/forums/showthread.php?t=52211
Wenn du einen Rahmen um die Bilder machst

\documentclass{scrartcl}
\usepackage{amsmath,amssymb}
\usepackage{graphicx}
\usepackage{multirow}
\usepackage{color}
\usepackage{rotating}
\usepackage{longtable}
\usepackage{algorithmic}
\usepackage{algorithm}
\usepackage{mathrsfs}
\usepackage{listings}
\usepackage{amsthm}
\usepackage{listings}
\usepackage{lscape}
\usepackage{subfig}
\usepackage{pgfplots}

\tikzset{every mark/.append style={scale=0.8}}
\pgfplotsset{every axis legend/.append style={scale=0.4,at={(0.54,0.87)},anchor=east},com pat=1.3}

\begin{document}
\begin{figure}[h]
\centering
\subfloat[Eine sehr lange lange lange lange lange caption.]{

\centering\fbox{
\begin{tikzpicture}[scale=0.83]
\begin{loglogaxis}
\addplot[color=black] coordinates {
(1,1)
(2,2)
(4,4)
(8,8)
(16,16)
(32,32)
(64,64)
};
\end{loglogaxis}
\end{tikzpicture}
}}
\hfill
\subfloat[Eine sehr lange lange lange lange lange caption.]{
\centering\fbox{
\begin{tikzpicture}[scale=0.83]
\begin{loglogaxis}
\addplot[color=black] coordinates {
(1,1)
(2,2)
(4,4)
(8,8)
(16,16)
(32,32)
(64,64)
};
\end{loglogaxis}
\end{tikzpicture}
}}
\caption{todo..}
\label{fig:example}
\end{figure}


\end{document}
siiehst du, dass die Bildunterschriften sehr wohl zentriert sind (Anhang). Solltest du aber gemeint haben, die captions ohne die Achsenbeschriftung zu machen, wüßte ich momentan auch nicht, wie das zu lösen sei. Eventuell mit einer Legende im TikZ?
Gruß, Sepp.-

Mat
24-02-2012, 17:56
danke für die Hilfe erstmal. Also mit der fxbox sehe ich dass es zentriert ist ja.
natürlich habe ich auch eine achsensbeschriftung - habe die nur fürs minimalbeispiel rausgenommen.

was ich aber versuche ist folgendes: die caption sollte maximal so breit sein wie der plot OHNE die y-achsenbeschriftung. also in meinem minimalbeispiel so breit wie der plot dargestellt ist. also vielleicht lässt sich die caption-beschriftung nach rechts pressen oder die breite auf eine gewisse länge festsetzen (5cm?) oder dergleichen??

danke

Sepp99
24-02-2012, 18:29
Du könntest dir ja einmal das caption-Paket anschauen. So etwas wie
\usepackage[font=small,margin=4cm]{caption} könnte in diese Richtung gehen.
Gruß, Sepp.-

Mat
24-02-2012, 19:16
hmm...kann man das auch lokal nur für ein oder zwei plots ändern... bin da nicht so bewandert mit captionsetups...

Feuersaenger
25-02-2012, 23:16
Hallo Mat,

pgfplots kommt mit Methoden, die die Modifikation der bounding box erlauben - sogar relativ bequem.

Im einfachsten Fall kannst Du



\begin{tikzpicture}[trim axis left,trim axis right]
\begin{axis}
....


schreiben - dann wird alles links und rechts von (der ersten) achse im tikzpicture von der Bounding box ausgeschlossen. Das ist insbesondere fuer zentrierung sehr nuetzlich.

Falls das nicht gut genug ist (weil es schliesslich die achsenbeschriftungen in den randbereich des papiers schiebt), kannst Du erwaegen, Deine caption *innerhalb* der Achse (mittels eines \node) zu plazieren (siehe z.B. `extra description` im pgfplots manual).

Details zu dem bounding box anpassen gibt es im pgfplots manual in section Alignment.

Mat
28-02-2012, 16:57
Perfekt! Genau das was ich gesucht habe! Danke Dir.

Mat
01-03-2012, 09:49
Hallo,

ich habe soeben mein tex-ordner auf ein anderes system gebracht und plötzlich
bekomme ich folgende fehlermeldung:



Package pgfplots Error: Sorry, the 'trim axis left' requires a more recent PG
F version. At the time of this writing, only the experimental PGF version avail
able from texexample.net supports it..


woran liegt das und wie kann ich das problem beheben? ich suche bereits bei texexamples.net...

danke

Mat
01-03-2012, 10:25
habs durch ne neue installation von pgf hinbekommen!