Seite 1 von 1

Matlab2Tikz

Verfasst: So 9. Dez 2012, 19:21
von Blubb1612
Hallo.
Ich nutze 'Matlab2Tikz' um meine im Matlab-Diagramme schick in mein Tex-Dokument einzubinden.
Dabei habe ich allerdings das Problem, dass ich die Größe der Legende der Matlab Figure nicht anpassen kann und diese auch eher nicht skaliert wird, wenn ich folgenden Code zum einbinden nehme. Wie kann ich denn die Größe der Legenden ändern bzw festlegen?
\begin{figure}[H]
\centering
\subfloat[\label{pic:GM}]{\setlength\figureheight{3cm}
\setlength\figurewidth{5cm}
\input{GM.tikz}}
\hspace{0.5cm} 
\subfloat[\label{pic:KO}]{\setlength\figureheight{3cm}
\setlength\figurewidth{5cm}
\input{KO.tikz}}
\caption{Zwei Bilder: a) Text1, b) Text2}
\label{Gesamtbild}
\end{figure}
[\code]

Verfasst: Mo 10. Dez 2012, 16:14
von Epllus
Bitte ein lauffähiges Minimalbeispiel (oder auch nicht minimal je nachdem).

Verfasst: Mi 14. Dez 2016, 13:44
von TomF
Hallo,

ich habe ein ähnliches Problem:

Genau wie Blubb1612 nutze auch ich Matlab2Tikz und habe damit 9 plots als .tikz datei abgespeichert. Diese möchte ich nun mit Hilfe von 9 Minipages (für elegantere Lösung gerne beschied geben;) ) zu einem 3x3 Raster auf einer Seite darstellen und muss dazu die Größe der einzelnen Grafiken anpassen. Dies habe ich nun mit
 \usepackage{tikzscale}
und
\begin{minipage}{0.3\textwidth}
		 \centering \includegraphics[width=\textwidth]{fig2.tikz}
	  \end{minipage}
gelöst, allerdings dauert ein compile Vorgang ca eine minute und somit ist das keine wirrkliche Lösung meines Probelms...

Hier ein Minimalbesipiel:
\documentclass[a4paper,oneside,DIV=18,12pt,page2 package
listsleft]{scrreprt}

\usepackage[german]{babel}              
\usepackage[T1]{fontenc}                 
\usepackage[utf8]{inputenc}              
\usepackage[komastyle]{scrpage2} 

\usepackage{float}
\usepackage{pgfplots}
\usepackage{tikzscale}

\begin{document}
\begin{figure}[H]
	\begin{minipage}{0.3\textwidth}
		 \centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		 \centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		 \centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}\\
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}\\
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\begin{minipage}{0.3\textwidth}
		\centering \includegraphics[width=\textwidth]{fig2.tikz}
	\end{minipage}
	\caption{Ansatzfunktionen}
\end{figure}

\end{document}
Als Anhang noch ein Bild, wie es aussehen soll bzw. wie es mit entsprechender Wartezeit auch aussieht...
fig2.tikz ist ebenfalls angehängt, somit ist der code komplett lauffähig!

Vielen vielen Dank schon einmal im Vorraus

Beste Grüße TomF

Verfasst: Mi 14. Dez 2016, 14:23
von Gast
Eigentlich ist das ein ganz anderes Problem und sollte deshalb nicht an eine frühere Frage angehängt werden, sondern als neue gestellt werden.

Zunächst einmal gibt das Beispiel die Warnung:
LaTeX Warning: Unused global option(s):
    [page2packagelistsleft].
was ehrlich gesagt nicht sonderlich verwunderlich ist.

Dann arbeitet tikzscale in einer Art und Weise, dass das Bild mehrfach neu verarbeitet wird, bis es passt. Wie man aus der log-Datei erkennt:
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
(./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz) (./fig2.tikz)
führt das dazu, dass jede der neun Grafiken viermal neu aufgebaut wird, also insgesamt 36 Mal! Dass das länger dauert, ist nicht sonderlich verwunderlich.

BTW: Verwendest du wirklich alte Rechtschreibung (also beispielsweise "daß" statt "dass")? Sonst wäre die Option bei babel nämlich falsch. Außerdem wurde scrpage2 schon vor längerer Zeit durch scrlayer-scrpage ersetzt. Und wenn das ganze nicht gleiten soll, kann man eigentlich einfach auf die Gleitumgebung verzichten. Außerdem sollte man immer compat setzen, wenn man pgfplots verwendet.

Verfasst: Mi 14. Dez 2016, 14:25
von Gast
Ach, ich vergaß: Du solltest Abschnitt 3.2 in der [d]tikzscale[/d]-Anleitung lesen. Dort gibt es zu dem Zeitproblem einen Tipp.

Verfasst: Mi 14. Dez 2016, 14:41
von Gast
Es sind sogar 5*9=45 Ladevorgänge für die Abbildung, was aber nichts an der grundsätzlichen Korrektheit der Erklärung ändert.

In der Tat benötigt
\documentclass[DIV=18,12pt]{scrreprt}% a4paper und oneside sind default

\usepackage[ngerman]{babel}% Neue Deutsche Rechtschreibung
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[automark]{scrlayer-scrpage}% scrpage2 ist veraltet

\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepackage{tikzscale}
\usetikzlibrary{external}
\tikzexternalize

\begin{document}

\noindent\begin{minipage}{\textwidth}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}\\
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}\\
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\begin{minipage}{0.3\textwidth}
\centering \includegraphics[width=\textwidth]{fig2.tikz}
\end{minipage}
\captionof{figure}{Ansatzfunktionen}
\end{minipage}

\end{document}
bei mir ab dem zweiten LaTeX-Lauf nur noch 2 Sekunden, während der erste über 2 Minuten benötigt und ohne external jeder LaTeX-Lauf über 2 Minuten benötigt.

Verfasst: Mi 14. Dez 2016, 15:41
von TomF
Erst einmal vielen Dank für die wirklich schnellen und guten Antowrten!
Ich bin leider ien ziemlicher Anfänger aber mittlerweile auch großer Liebhaber von LaTeX, somit vielen Dank für die allgeimenen "BTW" Hinweise ;)

Wenn ich nun die external library verwenden möchte und eure anderen Hinweise umsetze bekomme ich jedoch folgenden Fehler ausgespuckt:

Package tikz Error: Sorry, the system call 'pdflatex -halt-on-error -interact

und zwar in der fig2.tikz file selber.[/code]

Verfasst: Mi 14. Dez 2016, 15:48
von Gast
Lies bitte in der [d]pgf[/d]-Anleitung nach, was bei Verwendung von external zu beachten ist. Beachte außerdem, dass Fehlermeldungen vollständig aus der log-Datei kopiert werden sollten (und weil Leerzeichen und Umbrüche wichtig sind zwischen Code-Tags).

Mit dem Bruchstück der Fehlermeldung würde ich vermuten, dass du beim Aufruf von pdflatex dessen Aufrufparameter -shell-escape nicht angegeben hast. Siehe beispielsweise Wie aktiviere ich -shell-escape in meinem Editor?

Verfasst: Mi 14. Dez 2016, 16:08
von TomF
Vielen Dank, nun klappt alles!

Ein simples einfügen der Zeile

% !TeX TXS-program:compile = txs:///pdflatex/[--shell-escape]

am Anfang des Elements hat das Problem behoben (Wie auch immer Du das aus der Fehlermeldung erkannst hast... :shock:).