PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : matlab2tikz, x-Achse



Fite
27-10-2013, 08:05
Hallo Leute,

ich habe ein recht komplex zu beschreibendes Problem aber ich versuchs trotzdem mal. Ich habe mit folgendem MATLAB-Code (siehe unten) und dem m-file matlab2tikz.m (kann man ergoogeln) eine .tikz-Datei erstellt, die ich bereits erfolgreich in Latex eingebunden habe. Einziges Manko: Ich habe in Matlab die ursprüngliche x-Achsenbeschriftung (also 1,2,3,4,...) in einen Text geändert und diesen Text um 45 Grad gedreht. Das Problem ist, dass ich im erzeugten PDFLatex-Dokument dann wieder die alte x-Achse angezeigt bekomme und nicht meinen gedrehten Text. Kann mir hier jemand einen Tipp geben?

Der Matlab-Code sieht wie unten dargestellt aus. Wenn im gleichen Verzeichnis die Dateien matlab2tikz.m, matlab2tikzInputParser.m und updater.m liegen (findet man beim googeln), kann man das test.tikz durch ausführen des Codes erstellen. Anschließend kann es mit dem Befehl \input{test.tikz} in der figure-Umgebung eingebunden werden. Wäre über Hilfe sehr, sehr dankbar.

VG
Fite




clear all
close all

%% x- und y-Daten
X= [0 1 2 3 4 5 6 7 8 9 10]';
LE1= [2.14 1.82 2.2 2.21 1.71 2.41 1.68 3.63 2.21 1.81 1.52]';

%% Plot SFA, Erstbelastung
plot(X,LE1,'>b');

% Diagrammbeschriftung
xlim([0 10])
ylim([0 4])
set(gca,'YTick',0:4)
set(gca,'XTick',0:10)
set(gca,'YTickLabel',{'Min';'';'';'';'Max'})
xticklabel_rotate([0:10],45,{'Text','Text','Text','Text','Text','Text','Te xt','Text','Text','Text','Text'})
% TIKZ
matlab2tikz('test.tikz', 'height', '5.5cm', 'width', '5.5cm' );

Fite
29-10-2013, 21:38
Hm, keiner ne Idee?

bobmalaria
29-10-2013, 21:54
hi,

es fehlt der output von matlab2tikz!

das generiert doch eine *.tex datei oder ein *.tikz datei oder sowas in der die ganzen tikz befehle drin stehen.

du kannst nicht erwarten das hier jeder matlab hat. ich z.b. nicht, ich hab nur R als privatanweder.

gruss

Fite
31-10-2013, 10:03
Hallo,

Verzeihung, das war mir in dem Moment nicht klar. Ich habe hier einmal den Inhalt der .tikz-Datei in die Code-Umgebung gepackt. Normalerweise müsste man den Code in ein Textdokument speichern können und als z.B. test.tikz ablegen können.

Viele Grüße
Fite





% This file was created by matlab2tikz v0.3.1.
\begin{tikzpicture}

\begin{axis}[%
width=5.5cm,
height=5.5cm,
scale only axis,
xmin=0, xmax=10,
xtick={0,1,2,3,4,5,6,7,8,9,10},
ymin=0, ymax=4,
ytick={0,1,2,3,4},
yticklabels={Min,,,,Max}]
\addplot [
color=blue,
only marks,
mark=triangle,
mark options={solid,,rotate=270},
forget plot
]
table{
0 2.14
1 1.82
2 2.2
3 2.21
4 1.71
5 2.41
6 1.68
7 3.63
8 2.21
9 1.81
10 1.52
};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:-0.00251889168765743, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.0957178841309824, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.19647355163728, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.294710327455919, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.395465994962217, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.496221662468514, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.594458438287154, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.695214105793451, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.793450881612091, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.894206549118388, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.994962216624685, -0.0278637770897833, 0) {Text};
\end{axis}
\end{tikzpicture}%

bobmalaria
31-10-2013, 10:49
hi,

mehrere dinge scheinen hier falsch zu laufen.

da die nodes die den text enthalten nach dem plot gezeichnet werden, aber außerhalb des plots liegen werden sie nicht gezeigt. das bekommt man noch ganz einfach in den griff indem man

clip=false in den axis-umgebungs-optionen setzt.

http://www.mrunix.de/forums/attachment.php?attachmentid=5891&stc=1&d=1383212599

dann scheint aber matlab2tikz die labels falsch zu skalieren. das kannst du ja schon sehen wenn du mal die koordinaten anschaust. es scheint alles um den faktor 10 zu klein zu sein.

wenn ich das per hand ändere stehen die labels schon mal richtig. leider werden die zahlen aber noch angezeigt.

http://www.mrunix.de/forums/attachment.php?attachmentid=5892&stc=1&d=1383212605

das muss man dann mit xticklabels=\empty abschalten

http://www.mrunix.de/forums/attachment.php?attachmentid=5893&stc=1&d=1383212651


das ist alles ein ganz schönes gefummel. einfacher ist es übrigens wenn du die optionen verwendest wie im pgfmanual beschrieben, abschnitt 4.21. SYMBOLIC COORDINATES AND USER TRANSFORMATIONS, seite 297.
das würde ich auch empfehlen.
stichwort: symbolic x coords={}

hier mal der gepfuschte code


\documentclass[border=10mm]{standalone}

\usepackage[]{pgfplots}
\pgfplotsset{compat=1.8}

\begin{document}

\begin{tikzpicture}

\begin{axis}[%
width=5.5cm,
height=5.5cm,
scale only axis,
xmin=0, xmax=10,
xtick={0,1,2,3,4,5,6,7,8,9,10},
xticklabels=\empty,
ymin=0, ymax=4,
ytick={0,1,2,3,4},
yticklabels={Min,,,,Max},
clip=false]
\addplot [
color=blue,
only marks,
mark=triangle,
mark options={solid,,rotate=270},
forget plot
]
table{
0 2.14
1 1.82
2 2.2
3 2.21
4 1.71
5 2.41
6 1.68
7 3.63
8 2.21
9 1.81
10 1.52
};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:-0.0251889168765743, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:0.957178841309824, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:1.9647355163728, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:2.94710327455919, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:3.95465994962217, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:4.96221662468514, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:5.94458438287154, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:6.95214105793451, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:7.93450881612091, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:8.94206549118388, -0.0278637770897833, 0) {Text};
\node[left, inner sep=0mm, rotate=45, text=black]
at (axis cs:9.94962216624685, -0.0278637770897833, 0) {Text};
\end{axis}
\end{tikzpicture}%

\end{document}

wenn du solche einfachen plots hast, mach sie doch direkt in latex, also mit dem pgfplospaket. lass dir von matlab die daten in eine dat oder csv datei oder sowas schreiben und lese die dann ein.
dann hast du die volle kontrolle über den code der in diesem fall vielleicht 10 zeilen lang wäre wenn man ihn selbst schreibt

Fite
01-11-2013, 00:19
Vielen vielen Dank!