Gnuplot

  • Creatore
    Topic
  • #89749
    Up
    0
    Down
    ::


    Ciao a tutti.
    Devo creare dei grafici di dati registrati.
    I dati stanno banalmente in files di testo semplice costituiti da due colonne, che andranno poi a riempire un comune grafico a dispersione “X Y”.
    Si vuole inoltre rappresentare sullo stesso grafico diverse serie di dati.
    Ok, questo è un accenno al semplice problema, ma la mia domanda voleva essere più generale.

    Questi grafici devono essere prima valutati con altri collaboratori, eventualmente modificati nell’aspetto ecc…
    Ed infine dovranno essere inclusi in un documento di testo.

    Siccome non lavoro da solo alla questione mi sono dovuto un po’ adeguare alle abitudini degli altri.
    In pratica vuol dire che per il momento abbiamo prodotto i grafici con excel (un parto!!!).
    E si vorrebbe creare un file di testo con Word.

    Dal canto mio, penso che con un buon template latex (anche piuttosto semplice) e un template gnuplot si possano ottenere risultati visivamente più gradevoli, ma soprattutto si impega davvero un millesimo del tempo rispetto all’utilizzo dell’accoppiata word excel che sembra governata da murphy in persona.
    L’idea è quella che preparando due template latex+gnuplot sia rapido e abbastanza facile adattarli all’esigenza. Nel mio caso per esempio ho riutilizzato più volte un template per una relazione, contenente la struttura tipo di tabelle didascalie ecc, e si è rivelata davvero utile consentendomi di concentrarmi sulla sostanza del testo piuttosto che sulla forma grafica. Pur ottenendo un risultato visivo ben più convincente dei soliti “word processors”.

    Le domande che volevo porvi erano le seguenti.
    In una situazione del genere…

    1- come produrre con gnuplot grafici visionabili da tutti? cioè che terminale usare? ho notato che producendo un’immagine “svg” si ha un’ottimo risultato.

    2- Quale modalità utilizzare per includere in latex questi grafici, includendo anche i colori ecc.

    Su entrambi i punti vi chiederei di rispondermi in modo semplice perchè sono tutt’altro che esperto sia riguardo latex che gnupnlot.
    Vi Ringrazio in anticipo! 🙂

Visualizzazione 15 filoni di risposte
  • Autore
    Risposte
    • #89750
      Up
      0
      Down
      ::


      Premesso che in questo forum ti verrà consigliato di usare il pacchetto [tt]pgfplots[/tt] per fare i grafici (qui trovi una buona guida di partenza: http://www.lorenzopantieri.net/LaTeX_files/Grafici.pdf poi comunque puoi sempre consultare il manuale ufficiale per maggiori dettagli, puoi anche dare un’occhiata a questi esempi: http://pgfplots.sourceforge.net/gallery.html e http://www.texample.net/tikz/examples/pgfplots/ ), comunque rispondo alle tue curiosità legate a gnuplot

      ccccc” post=89280Le domande che volevo porvi erano le seguenti.
      In una situazione del genere…

      1- come produrre con gnuplot grafici visionabili da tutti? cioè che terminale usare? ho notato che producendo un’immagine “svg” si ha un’ottimo risultato.

      Per fini non legati a LaTeX ci sono tanti terminali utili, sicuramente svg e pdf (se non sbaglio pdfcairo è il migliore) sono molto comodi perché il risultato è un file di grafica vettoriale.

      ccccc” post=892802- Quale modalità utilizzare per includere in latex questi grafici, includendo anche i colori ecc.

      Decisamente il terminale LaTeX migliore è [tt]esplatex[/tt] (lascia stare [tt]latex[/tt], fa pena)

    • #89751
      Up
      0
      Down
      ::


      Grazie mille per la risposta!

      Quindi in sintesi, per produrre i grafici e valutarli può essere utile gnuplot…
      Invece per un documento in latex meglio usare pgfplots.

      Ho capito bene?
      Il succo sarebbe questo?

      E per quanto riguarda la mole dei dati da rappresentare in grafico? Ho a che fare con files di circa 600 coppie (X,Y). Può essere un problema usare pfgplots? vedo che il testo latex comprenderebbe proprio i dati… e mi pare che ci potrebbe essere qualche problemino di documento sorgente un po’ ingombrante.
      Come organizzarsi in tal senso?

      La resa grafica tra l’utilizzo di gnuplot con terminale epslatex oppure di pgfplots è tanto differente?

    • #89752
      Up
      0
      Down
      ::

      ccccc” post=89350Grazie mille per la risposta!

      Quindi in sintesi, per produrre i grafici e valutarli può essere utile gnuplot…
      Invece per un documento in latex meglio usare pgfplots.

      Ho capito bene?
      Il succo sarebbe questo?

      Il succo è che su questo forum tutti tranne me suggeriscono di usare [tt]pgfplots[/tt], io uso sempre [tt]gnuplot[/tt]. Io non ho nulla contro il risultato grafico che si ottiene con [tt]pgfplots[/tt] (anzi, mi piace molto e mi piace il fatto che si possano usare i comandi TikZ all’interno del grafico) e per questo comunque te ne ho parlato. Quello che io lamento è che [tt]pgfplots[/tt] ha, per come è stato progettato, dei pesanti limiti che si presentano quando ci sono da fare molti calcoli o quando si ha a che fare con grafici con molti punti. Il problema è che [tt]pgfplot[/tt] usa il motore di calcolo di TeX che però non è nato per fare queste cose. Questi problemi possono più o meno essere aggirati usando [tt]lualatex[/tt] come motore di composizione, ma questo richiede anche di migrare i propri documenti a questo motore (a meno di non creare tutte le figure come dei PDF esterni da includere nel documento), cosa che potrebbe non essere semplice. Comunque ci sono dei grafici che anche usando [tt]lualatex[/tt] semplicemente non si riescono a realizzare o richiedono tempi estremamente lunghi o il file di output è molto pesante. Al contrario, [tt]gnuplot[/tt] non ha queste limitazioni e personalmente trovo che il risultato che si ottiene usando il terminale [tt]epslatex[/tt] non sia molto inferiore a quello che si ottiene con [tt]pgfplots[/tt]. In definitiva, personalmente preferisco [tt]gnuplot[/tt].

      ccccc” post=89350E per quanto riguarda la mole dei dati da rappresentare in grafico? Ho a che fare con files di circa 600 coppie (X,Y). Può essere un problema usare pfgplots? vedo che il testo latex comprenderebbe proprio i dati… e mi pare che ci potrebbe essere qualche problemino di documento sorgente un po’ ingombrante.
      Come organizzarsi in tal senso?

      Ho già risposto sopra, i grafici con molti punti (ma non chiedermi l’ordine di grandezza perché non uso [tt]pgfplots[/tt]) possono dare problemi. Le soluzioni variano dall’aumentare la memoria a disposizione di TeX, all’uso di [tt]lualatex[/tt] passando per la creazione di un singolo PDF per figura.

      ccccc” post=89350La resa grafica tra l’utilizzo di gnuplot con terminale epslatex oppure di pgfplots è tanto differente?

      Anche a questo ho già risposto sopra, secondo me la differenza non è molta. Uno dei maggiori pregi sia di [tt]gnuplot[/tt] con terminale [tt]epslatex[/tt] sia di [tt]pgfplots[/tt] è che usano lo stesso font del documento originale, quindi l’integrazione è molto buona. Lo stesso non si potrebbe dire per i grafici prodotto con altri strumenti

    • #89753
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Concordo con quanto dice @Elrond.
        Se cerchi qui sull forum le discussioni che si sono fatte a proposito del fatto che con pgfplots si può incorrere nella saturazione della memoria, trovi molti rimedi, il primo e più efficace dei quali consiste nell’aumento della memoria, che si può specificare sia con ;a distribuzione TeXLive, sia con MiKTeX. È un po’ delicate, quindi sarebbe meglio che cercassi tu direttamente quello che bisogna fare per riconfigurare la memoria del programma. Per la verità consultando il testo texlive.pdf (texdoc texlive) o l’Help di MiKTeX, puoi scoprire direttamente come si fa.

        Tuttavia io stesso in questo forum ho contribuito alcuni messaggio epr dire essenzialmente due cose:
        1) Esiste la libreria per TiKZ/pgf che permette di usare gli algoritmi di Hobby per il tracciamento delle curve “smooth” (mediante le spline di Bézier) che consente di usare meno punti di quelli che sarebbero necessari a pgfplots per tracciare curve dolci e ben raccordate.
        2) usare centinaia di punti per eseguire un plot potrebbe servire per disegnare una curva di rumore, oppure vuol dire che il “disegnatore” non è capce di farsi due conti sulle dita. Infatti o le curve da tracciare sono relativamente dolci o non lo sono; se non lo sono, un diagramma che riporti una funzione che va rapidamente su e giù da un punto al successivo, non fornisce nessuna informazione (si tratta di rumore), e sarebbe del tutto inutile.Se invece il diagramma è fatto con curve relativamente dolci ci si può domandare. quanto è lunga la curva? Stabilito questo ci si può domandare: con quale densità di pixel la posso mostrare sul supporto finale del documento? Lo schermo ha una densità solitamente di 70-100 pixel al pollice; le stampanti hanno solitamente una densità non inferiore a 300 pixel al pollice. per disegnare la curva con un certo fattore di scala sul documento finale mediante un dispositivo di quella densità di pixel quanti punti mi occorrono, visto che certamente non voglio usare più punti del necessario? Se sai prendere la lunghezza scalata epr il fattore di scala indicandola in pollici e moltiplichi per la densità in pixel al pollice, trovi di quanti punti sono necessari al massimo per tracciare la curva bene; dico al massimo, perché la curva potrebbe essere veramente dolce e puoi allora diminuire quel numero. Usare più punti serve solo a far fare calcoli inutili a pgfp;ots.

        A me, a naso 600 punti mi sembrano una schioppettata inutile, ma naturalmente non so di che grafico si tratti.

      • #89754
        Up
        0
        Down
        ::


        Ciao e grazie ancora a tutti e due.
        Il discorso della curva di smooth, spline ecc.. potrebbe essere anche una soluzione. Forse… Almeno a livello rappresentativo.

        Bisogna entrare nello specifico.
        I dati che devo mettere in grafico costituiscono la cosiddetta “curva di durata” della portata di un corso d’acqua.
        Mettiamo di avere 30 giorni, un mese.
        abbiamo una stazione di misura che ogni giorno ci dice la portata media che defluisce nel corso d’acqua.
        Disponiamo poi i valori dal più piccolo al più grande.
        Sull’asse X avremo il numero di giorni, in Y le portate.
        Per X=1 avremo la portata maggiore (quella che si supera o si raggiunge una sola volta in un mese). Per la X=30 avremo la Y con portata minore (quella che viene raggiunta o superata per una durata di 30 giorni).

        Il grafico sopra descritto avrebbe solo 30 “puntini” da rappresentare.

        Per dare un senso statistico alla faccenda si inseriscono 20 anni di registrazioni, nel mio caso tutti relativi allo stesso mese (tipo 20 mesi di Gennaio per esempio).
        Ecco che avremo 600 dati.
        I valori sull’asse X che vanno da 1 a 600 vengono poi trasformati scalandoli su base mensile cioè in modo che vadano da 1 a 30.

        Resta il fatto che il grafico così creato per forza di cose riporta 600 punti.

        Per complicare le cose… si vuole confrontare le curve di diversi corsi d’acqua, diciamo N (tipo 5 o 6 fiumi), quindi avremo 600 x N punti.

        Certo la curva di smooth in questo caso sarebbe un grande alleggerimento di lavoro per qualsiasi programma.
        Ma poi su quei grafici vanno fatte considerazioni di vario tipo e penso che la precisione sia imprescindibile.
        Tipo se si parla di convergenza delle curve per una certa durata si deve essere sicuri che quella sia relativa alle curve dei dati registrati e non alle curve di smooth. Non so se mi sono spiegato… Altrimenti si fa speculazione su qualcosa di artificiale che magari non rappresenta in modo realistico la realtà osservata.

        Spero di aver chiarito meglio la situazione specifica. Ciò no toglie che il discorso sia interessante anche per altre finalità.
        Grazie di nuovo a tutti per la disponibiltà 😀

      • #89755
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Capisco il problema, ma il tipo di dati che devi riportare sembra più adatto a un istogramma, un diagramma a barre verticali, adeguatamente sfalsate come se le barrre fossero in uno spazio a tre dimensioni. La portata così indicata come numero di giorni in cui si è superato un certo valore è una informazione di tipo statistico, non dà un andamento temporale, quindi un diagramma a linee continue non rappresenta niente.

          Naturalmente decidi tu, perché sai tu quali siano le abitudini/consuetudini nel tuo ramo disciplinare.

        • #89756
          Up
          0
          Down
          ::


          Scusa ma non ho ben capito.
          Tanto per farti un esempio, visto che il discorso è poi abbastanza semplice, nel link seguente potete vedere un esempio.
          Eccolo!

          Viene riportato l’”idrogramma” di alcuni corsi d’acqua cioè il grafico della portata registrata. In questo vi è un ordine cronologico.
          Nei grafici successivi è invece riportata la curva di durata ottenuta dai precedenti. Svanisce l’informazione cronologica, ma si evidenzia la durata ovvero la frequenza di una certa portata. Il senso dell’operazione è quello. Le destinazioni d’uso di queste curve sono molteplici:
          dallo studio del comportamento idrologico del bacino, al calcolo della potenzialità idrica di un corso d’acqua per varie finalità, fino alla determinazione di valori caratteristici da “garantire” per la sopravvivenza delle specie che popolano il fiume.

          Insomma questo per dire che la consuetudine è quella. La curva che serve è quella descritta. Si può rappresentare anche ad istogrammi ma resta sempre una curva. E soprattutto resta sempre il problema della mole di dati da rappresentare.

          Grazie in ogni caso della disponibilità e delle risposte graditissime. La vostra esperienza è preziosa per chi come me cerca le soluzioni più adatte per massimizzare la “produttività” e la resa dell’esposizione.
          Lascio a voi ulteriori consigli. Aggiungo solo che la linea di smooth potrebbe essere un’idea, anche se parte da un concetto sbagliato (nel senso che travisa i dati registrati). Dico questo perchè d’altra parte non si può sperare in ogni caso di leggere i 600 puntini della curva.

          Cosa ne dite?

        • #89757
          Up
          0
          Down
          ::


          Alla luce del mio ultimo post nessuna ha consigli ulteriori?
          Confermate gnuplot con terminale epslatex?

          E invece dovendo inserire i grafici in Word quale terminale consigliereste?

        • #89758
          Up
          0
          Down
          ::

          ccccc” post=89437Alla luce del mio ultimo post nessuna ha consigli ulteriori?
          Confermate gnuplot con terminale epslatex?

          Onestamente il consiglio che mi sento di darti è: lavora con lo strumento che ti è più congeniale. Ognuno ha metodi di lavoro diversi; per dire: io userei pgfplots, senza neppure pensarci perché mi viene comodo così.

          ccccc” post=89437
          E invece dovendo inserire i grafici in Word quale terminale consigliereste?

          Guarda che sei su un forum di LaTeX… 👿

          Ciao
          Claudio

        • #89759
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Recentemente ho fatto un grafico di un segnale sisimico tempo/accelerazione.
            Si tratto di un grafico molto più difficile da trattare che non quello delle portate che hai postato come link.
            Sinceramente pensavo che non fosse un lavoro per pgfplots per via delle forti variazioni su 2500 istanti temporali.
            Ma con mia sorpresa pgfplots mi ha dato un ottimo risultato.
            Saluti tranne a quelli che vedrò domani al meeting che saluterò di persona…

          • #89760
            Up
            0
            Down
            ::

            robitex” post=89441Recentemente ho fatto un grafico di un segnale sisimico tempo/accelerazione.
            Si tratto di un grafico molto più difficile da trattare che non quello delle portate che hai postato come link.
            Sinceramente pensavo che non fosse un lavoro per pgfplots per via delle forti variazioni su 2500 istanti temporali.
            Ma con mia sorpresa pgfplots mi ha dato un ottimo risultato.
            Saluti tranne a quelli che vedrò domani al meeting che saluterò di persona…

            lualatex o pdflatex (o altro)?

          • #89761
            Up
            0
            Down
            ::


            Come hai organizzato il sorgente latex usando pgfplots?
            Immagino che tu abbia scritto il grafico in un file latex a parte (tipo grafico.tex) e quindi lo abbia poi incluso in un probabille “main-document” (tipo main.tex).

            Dico bene?

            Eventualmente se non ti scoccia potresti mica inviarmi il file dove usi pgfplots tanto per vedere un caso simile (anche se sicuramente più fitto di dati) al mio?
            Anche in PM se preferisci.
            Se invece è roba riservata è uguale…

          • #89762
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::

              Elrond” post=89443

              Recentemente ho fatto un grafico di un segnale sisimico tempo/accelerazione.
              Si tratto di un grafico molto più difficile da trattare che non quello delle portate che hai postato come link.
              Sinceramente pensavo che non fosse un lavoro per pgfplots per via delle forti variazioni su 2500 istanti temporali.
              Ma con mia sorpresa pgfplots mi ha dato un ottimo risultato.
              Saluti tranne a quelli che vedrò domani al meeting che saluterò di persona…

              lualatex o pdflatex (o altro)?

              Ciao Elrond,
              Ho usato pdflatex.
              R.

            • #89763
              robitex
              Amministratore del forum
                Up
                0
                Down
                ::

                ccccc” post=89449Come hai organizzato il sorgente latex usando pgfplots?
                Immagino che tu abbia scritto il grafico in un file latex a parte (tipo grafico.tex) e quindi lo abbia poi incluso in un probabille “main-document” (tipo main.tex).

                Dico bene?

                Eventualmente se non ti scoccia potresti mica inviarmi il file dove usi pgfplots tanto per vedere un caso simile (anche se sicuramente più fitto di dati) al mio?
                Anche in PM se preferisci.
                Se invece è roba riservata è uguale…

                Si.
                Ho costruito il grafico a parte con i dati in un file di testo.
                Non è proprio una cosa riservata essendo una tesi di master che, in teoria, ho anche il permesso di pubblicare.
                Tuttavia non è un codice particolarmente prezioso o strano o esotico.
                Si tratta di codice pgfplots semplice, davvero niente di speciale: qualche opzione di regolazione delle dimensioni, di etichette assi e poco altro.
                R

              • #89764
                Liverpool
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Io non capisco dove stia il problema. Hai detto che sai usare gnuplot e certamente questo è in grado di realizzare con successo il grafico che ti serve. Allora perché vorresti cambiare?
                  Quanto a pgfplots, c’è un esempio di lettura da file ne L’arte di disegnare grafici con LaTeX. Semplice, ma potrebbe esserti utile. Se i dati sono formattati nel modo che piace al pacchetto, provare ti costa cinque minuti.

                  Quanto all’interpolazione con curve di Bézier (smoothing), direi che in questo caso è fuori discussione vedendo l’andamento discontinuo del grafico che ci hai mostrato. Quello che è lecito fare sulla tabella di dati per risparmiare punti è eliminare tutte le righe consecutive con lo stesso valore, tranne la prima e l’ultima della serie.
                  Ad esempio, se la tabella è
                  `1 0
                  2 1
                  3 2
                  4 2
                  5 2
                  6 2
                  7 3
                  8 3
                  9 1
                  10 1
                  11 1`puoi eliminare le righe 4, 5 e 10. Forse si può fare automaticamente con qualche script e chissà che non si possa fare direttamente con i comandi di [tt]pgfplotstable[/tt].

                  Ciao

                  P.S.: ovviamente questo discorso si applica tanto a pgfplots, quanto a gnuplot.

                • #89765
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    Dà un’occhiata al pacchetto gnuplottex (da terminal dà il comando texdoc gnuplottex); fa tutto da solo.

                    Tieni solo presente che negli esempi l’autore usa il terminale pdf, ma tu cambialo in epslatex, perché il terminale pdf non sempre è disponibile. Nella mia versione di gnuplot 2.6.2 , di ottobre 2013, se ben ricordo, di cui ho generato l’eseguibile da tar ball, quel terminale non esiste.

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

                Go to top