Figure Matlab in Latex

  • Creatore
    Topic
  • #7471
    Up
    0
    Down
    ::


    Ho appena scoperto l’esistenza di una routine matlab che trasforma tutte le figure create in matlab in eps con codice Latex associato: in pratica tutte le scritte contenute nella figura (titolo, ascisse, ordinate, legenda…) sono trasformate in codice latex, la routine genera un .tex che importa la figura mentre le scritte vengono posizionate con psfrag. Se ho ben capito (non l’ho ancora utilizzata) questo permette di riutilizzare le stesse figure senza preoccuparsi del fatto che magari nella tesi hanno un font e nella presentazione un altro perché i font verranno cambiati automaticamente.
    La routine si chiama “laprint.m” ed è disponibile qui:
    http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=4638&objectType=file
    Sapete se è possibile utilizzare questi file direttamente con pdflatex con qualcosa del tipo pdftricks?

Visualizzazione 16 filoni di risposte
  • Autore
    Risposte
    • #7472
      Up
      0
      Down
      ::


      Suggerimento ottimo. Appena posso lo provo ma dalla documentazione sembra una macro superlativa!

    • #7473
      Up
      0
      Down
      ::


      Ciao ho provato la routine laprint e la trovo molto utile e interessante, grazie minnolina per il suggerimento 🙂

      ..anche se non riesco ad usarla acora molto bene!! 😥
      ad esempio non riesco a visualizzare correttamente i label dei grafici.

      spero che qlc di più esperto riesca a dare qualche “dritta” utile sull’uso di questa routine

      ciao a tutti

    • #7474
      Up
      0
      Down
      ::

      Ho appena scoperto l’esistenza di una routine matlab che trasforma tutte le figure create in matlab in eps con codice Latex associato: in pratica tutte le scritte contenute nella figura (titolo, ascisse, ordinate, legenda…) sono trasformate in codice latex, la routine genera un .tex che importa la figura mentre le scritte vengono posizionate con psfrag. Se ho ben capito (non l’ho ancora utilizzata) questo permette di riutilizzare le stesse figure senza preoccuparsi del fatto che magari nella tesi hanno un font e nella presentazione un altro perché i font verranno cambiati automaticamente.
      La routine si chiama “laprint.m” ed è disponibile qui:
      http://www.mathworks.com/matlabcentral/fileexchange/loadFile.do?objectId=4638&objectType=file
      Sapete se è possibile utilizzare questi file direttamente con pdflatex con qualcosa del tipo pdftricks?

      Innanzitutto ringrazio moltissimo minnolina per la segnalazione (vecchia ma utilissima). Grazie a te mi sono impegnato per ricercare qualcosa che funzionasse più comodamente di laprint. Infatti questo fornisce un grafico .eps modificato con psfrag. Questo comporta il dover utilizzare la compilazione in PS altrimenti il grafico non è visualizzato correttamente. Dopo molto cercare con mio stupore ho trovato nella stessa pagina che segnali un collegamento ad una routine molto più comoda che può risolvere tutti i problemi connessi con laprint.m. Questa è PlotPdfTex (http://www.mathworks.com/matlabcentral/fileexchange/20847)! Essa utilizza lo stesso laprint.m per creare il .eps e modificarlo con psfrag, però automaticamente converte il grafico in .pdf, scontornato e pronto per essere utilizzato con pdfLaTeX 😀
      La cosa è semplicissima! Bisogna avere PlotPdfTex.m e laprint.m nella stessa cartella;poi o si ha la figura salvata sempre nella stessa cartella oppure la figura è attiva in matlab. Si può chiamare la funzione plotpdftex specificando uno o più opzioni in questo modo: plotpdftex(H,’nomefile’, [fontscaling linescaling], ‘pacchetti’). Dove
      H = numero della figura di interesse;
      nomefile = nome con cui verrà salvata la figura. Non è necessaria l’estensione (gli apici si, mi sono ammazzato per capirlo visto che non sono specificati nell’mfile)
      [fontscaling linescaling] = scalano rispettivamente grandezza del font e dello spessore delle linee rispetto al grafico ([1 1]=nessuno scaling)
      pacchetti = PACCHETTI DA UTILIZZARE!!!!!!! bisogna scriverli separandoli con una virgola (esempio = ‘amssymb, times’).

      Sottolineerei proprio quest’ultima opzione! Infatti in questo modo è possibile cambiare, ad es., il font del testo e dei numeri sul grafico velocemente, cosa che non sono riscito a fare con il solo laprint.m (ho provato con mathpazo e funziona alla perfezione)! Utilizzatelo se potete e fatemi sapere cosa ne pensate in modo da trovare eventuali bug e mancanze!

      Fra

    • #7475
      admin
      Amministratore del forum
        Up
        0
        Down
        ::


        Ti farò sapere se ho tempo. Ti ricordo che uno strumento altrettanto valido è matlab2tikz, che genera un codice tikz da includere direttamente nel file .tex. I vantaggi sono gli stessi di quelli elencati da te anzi, avendo il codice tikz, forse sono anche migliori.

      • #7476
        Up
        0
        Down
        ::


        Lo script matlab2tikz purtroppo ha qualche limite che voglio segnalare:

        – se nel grafico vengono inserite label oltre alla legenda queste non vengono convertite in tikz;

        – la conversione di grafici 3D non avviene.

        Premetto che lo uso da pochi giorni quindi non ho ancora un’ ottima dimestichezza.

      • #7477
        admin
        Amministratore del forum
          Up
          0
          Down
          ::

          Lo script matlab2tikz purtroppo ha qualche limite che voglio segnalare:

          – se nel grafico vengono inserite label oltre alla legenda queste non vengono convertite in tikz;

          – la conversione di grafici 3D non avviene.
          Premetto che lo uso da pochi giorni quindi non ho ancora un’ ottima dimestichezza.

          `% ========================================================================
          % *** FUNCTION matlab2tikz
          % ***
          % *** Convert figures to TikZ (using pgfplots) for inclusion in LaTeX
          % *** documents.
          % ***
          % *** Workflow:
          % *** 0.) Place this file in one of the MATLAB paths
          % ** (for example the current directory).
          % *** 1.) Create your 2D plot in MATLAB.
          % *** 2.) Invoke matlab2tikz by
          % ***
          % *** >> matlab2tikz( 'test.tikz' );
          % ***
          % ***
          % *** ——-
          % *** Note:
          % *** ——-
          % *** This program is a rewrite on Paul Wagenaars' Matfig2PGF which
          % *** itself uses pure PGF as output format , see
          % ***
          % *** http://www.mathworks.com/matlabcentral/fileexchange/12962
          % ***
          % *** In an attempt to simplify and extend things, the idea for
          % *** matlab2tikz has emerged. The goal is to provide the user with a
          % *** clean interface between the very handy figure creation in MATLAB
          % *** and the powerful means that TikZ with pgfplots has to offer.
          % ***
          % ***
          % *** TODO: * tex(t) annotations
          % *** * 3D plots
          % ***
          % =========================================================================`
          Per grafici 3D (superfici) cerca surf2latex

        • #7478
          Up
          0
          Down
          ::


          Grazie mille, non avevo letto bene i commenti iniziali!!!

        • #7479
          Up
          0
          Down
          ::


          buonasera a tutti
          riapro la discussione per porvi un quesito su plotpdfTeX , il mio problema riguarda il fatto che non riesco a usare il programma per stampare + file e con diversi nomi , non ho idea di quale sia la logica per impostare uno script che mi consenta di stampare molti file all interno della catella … qualche suggerimento?

        • #7480
          Up
          0
          Down
          ::

          buonasera a tutti
          riapro la discussione per porvi un quesito su plotpdfTeX , il mio problema riguarda il fatto che non riesco a usare il programma per stampare + file e con diversi nomi , non ho idea di quale sia la logica per impostare uno script che mi consenta di stampare molti file all interno della catella … qualche suggerimento?

          Devi scrivere uno script Matlab.
          Se cerchi su Google “introduzione a matlab” troverai parecchie guide che trattano gli argomenti i base di questo software.

          😉
          LuCa

        • #7481
          Up
          0
          Down
          ::


          uso matlab da diversi anni , il problema è solo capire la logica dello script .. voglio dire certo che facendo uno script con 10 diversi plot è fattibile ma se ho quasi 200 grafici in una cartella sarebbe comoda una scorciatoia …

        • #7482
          Up
          0
          Down
          ::


          Se le immagini hanno dei nomi “prevedibili” è semplice; supponendo che i file si chiamino “nomefile_001.ext”, “nomefile_002.ext” eccetera, puoi impostare uno script sul modello seguente
          `for iii=1:100
          dataname = strcat('nomefile_',num2str(iii,'%.3u'),'.ext');

          load(dataname);
          % …
          % resto dello script
          % …

          end`
          Il primo comando all’interno del ciclo assegna alla stringa “dataname” il nome del file corrente, e può essere usata ovunque nel resto dello script.

          😉
          LuCa

        • #7483
          Up
          0
          Down
          ::


          Geniale !! grazie 1000 😆

        • #7484
          Up
          0
          Down
          ::


          Buongiorno a tutti!
          Sono nuovo nel forum e da poco tempo ho imparato a fare qualcosa con LateX.
          Avrei bisogno di un aiuto con pdflatex. Non riesco a creare i grafici in pdf perchè Matlab mi da sempre lo stesso errore:

          ??? Error using ==> plotpdftex at 184
          Error 1 — PS2EPSI:
          eps2eps: No alternate file name found.
          eps2eps: Data: C:\Program Files

          Non so se magari era il caso di rivolgermi a qualche forum più specifico su Matlab, ma visto che ho conosciuto qui pdflatex, ho pensato di parlarne in questa discussione.
          Grazie in anticipo!!!

        • #7485
          Up
          0
          Down
          ::


          Ciao deimos84,

          quello che posso consigliarti io è di usare il pacchetto pgfplots. La documentazione è piuttosto ampia e corredata da molteplici esempi. Inoltre poi fare riferimenti alla function Matlab matlab2pgfplots. Io per fare i grafici in LaTeX (2D, per i 3D cerca in rete la function surf2latex, di cui però non c’è documentazione per quanto ne so io) uso questa function e poi completo ciò che non fa. Comunque secondo me è di grande aiuto, almeno per impostare il grafico. La resa grafica di pgfplots, poi, è molto elevata.

          Ciao,
          Marco.

        • #7486
          Up
          0
          Down
          ::


          ma sbaglio o questo script funziona solo in sistemi linux (non vorrei aver detto una fesseria … chiedi lumi a chi più esperto di me)

        • #7487
          Up
          0
          Down
          ::


          Ciao drudox84,

          ma sbaglio o questo script funziona solo in sistemi linux (non vorrei aver detto una fesseria … chiedi lumi a chi più esperto di me)

          No, funziona anche su Windows. Lo script (forse è una function, ma cambia poco) matlab2pgfplots è uno scritp di Matlab. Matlab è presente per Windows, Mac (Leopard), Ubuntu, Fedora e credo proprio anche per altre distro linux. Ovviamente devi disporre della versione di Matlab installabile sul tuo sistema operativo.

          Ciao,
          Marco.

          P.S. Io ho provato a installare Matlab R2010a su Ubuntu 10.04 con pochi risultati. Al momento dell’installazione non venivano installati alcuni pacchetti. Poiché non mi piace per niente disporre di una versione “ridotta” di un programma, ho proseguito nell’uso di Matlab su Windows.

        • #7488
          Up
          0
          Down
          ::


          cmq vorrei segnalare dei problemi che ho riscontrato con pgfplot .. ma credo nascano da laprint .. non so ome intervenire .. mi potreste dare una mano??

          il problema è il seguente :
          spesso la legenda del grafico viene “tagliata” o meglio il contorno è di dimensioni inferiori rispetto al testo della legenda ; non viene inserito il moltiplicatore (es. 10^5 ) dell’ asse y (è posizionato in alto sopra il riquadro …

      Visualizzazione 16 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top