PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Achsenbeschriftung einer in Matlab erzeugten tikz-Datei nachträglich ändern



ASGflash
25-06-2013, 18:32
Hallo,

Ich habe folgendes Problem:
Ich hab in Matlab mit der matlab2tikz-Funktion ein Tikz-File erstellt. Dabei ist die y-Achse im logarithmischen Maßstab. In Latex habe ich Datei folgendermaßen eingebunden:

\begin{figure}[htbp]
\input{graphics/test.tikz}
\centering
\caption{testcaption \label{fig:testlabel}
\end{figure}

Nun ist aber das Problem, dass Tikz die Beschriftung von Kommazahlen (0.1, 0.2, ...) bei logarithmischer Skalierung automatisch in Zehnerpotenzen umwandelt (10^-1, 10^-2, ...). Das Ganze wird dann auch unschön, wenn ich die Beschriftung vorher in Matlab mit YTickLabel fest definiere, da dann, egal welches Zeichen dort steht, dieses als Exponent der Zehnerpotenzen auftaucht... (also z.B.: 10^a).

Gibt es eine Möglichkeit die Beschriftung der Achse in Latex nachträglich zu ändern?

Grüße
Stefan

bobmalaria
25-06-2013, 19:09
hi,

pgf hat schon einige sog. number-formats.

mach doch mal die .tikz datei in einem texteditor auf und schau dir erstmal an wie die zahlen dort eingetragen sind. am besten postest du einen auszug...

du kannst auch mal versuchen vor dem \input das hier zu setzen

\pgfplotsset{y tick label style={/pgf/number format/fixed}}

siehe ausserdem hier
http://tex.stackexchange.com/questions/74837/removing-scientific-notation-in-tikzpicture-made-by-matlab2tikz

ASGflash
25-06-2013, 20:47
Danke für die schnelle Antwort.
Der Tipp mit dem Editor hat mich auf die Lösung gebracht. Über diesen hab ich herausgefunden, dass matlab2tikz schon diese Nomenklatur vorgenommen hat. Wobei das Standardformat von .tikz wohl das mit den Zehnerpotenzen ist (wenn man keine YTickLabel-Werte angibt). Es gibt bestimmt die Möglichkeit, das Ganze in pgf umzustellen, habs aber noch nicht ausprobiert... Außerdem sind denk ich die Autoformate von pgf sonst wahrscheinlich ganz nützlich.
Für eine individuelle Achsenbeschriftung bei logarithmischer Darstellung hab ich folgendes gemacht:

Folgende Passage suchen in matlab2tikz.m:

sprintf('$10^{%s}$', str) suchen (ist einmalig) und einfach durch
str ersetzen (ich denk wegen Copyright sollte ich hier nicht den ganzen Code posten). Soweit ich das sehe, ist diese Zeile in dem Kontext quatsch, aber ich kann mich da auch irren...;) Funktioniert auf jeden Fall bei mir:). Damit werden dann die YTickLabel-Werte korrekt übernommen.
Evtl. kann man noch ein "10^" vor dem ausgelesen Wert 4 Zeilen weiter oben einfügen, aber denke der Fall der dort beschrieben wird, sollte nicht eintreten.

Ist etwas zusammengeschustert. Vll gibt's auch elegantere Lösungen...

Bert444
26-06-2013, 20:21
Also gegen die Auflagen der "BSD License" würde das Posten sicher nicht verstoßen!