Anzeige:
Ergebnis 1 bis 6 von 6

Thema: matlab2tikz, x-Achse

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.02.2013
    Beiträge
    122

    matlab2tikz, x-Achse

    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

    Code:
    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','Text','Text','Text','Text','Text'})
    % TIKZ
    matlab2tikz('test.tikz', 'height', '5.5cm', 'width', '5.5cm' );
    Geändert von Fite (27-10-2013 um 07:09 Uhr)

  2. #2
    Registrierter Benutzer
    Registriert seit
    08.02.2013
    Beiträge
    122
    Hm, keiner ne Idee?

  3. #3
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    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
    Mein Ball ist umgefallen

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.02.2013
    Beiträge
    122
    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


    Code:
    % 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}%
    Geändert von Fite (31-10-2013 um 09:45 Uhr)

  5. #5
    Registrierter Benutzer Avatar von bobmalaria
    Registriert seit
    28.11.2006
    Ort
    Düsseldorf
    Beiträge
    4.174
    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.



    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.



    das muss man dann mit xticklabels=\empty abschalten




    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

    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
    Geändert von bobmalaria (31-10-2013 um 09:52 Uhr)
    Mein Ball ist umgefallen

  6. #6
    Registrierter Benutzer
    Registriert seit
    08.02.2013
    Beiträge
    122
    Vielen vielen Dank!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •