Resa grafica di pgfplots

  • Creatore
    Topic
  • #43552
    Up
    0
    Down
    ::


    Ciao a tutti,

    la domanda che voglio fare riguarda la resa grafica di pgfplots. Provate prima di tutto a confrontare i due seguenti grafici:

    e

    Se osservate il grid dei due grafici, noterete che MATLAB (utilizzato per plottare il primo grafico) traccia SEMPRE e solo riquadri di pari ampiezza sullo stesso asse, cosa che non riesco a far fare a pgfplots… Mi sembra una piccola pecca, ma che non voglio avere sui miei grafici.

    Si può far fare quello che fa MATLAB a pgfplots in maniera automatica?

    Grazie mille,
    Ciao.

Visualizzazione 21 filoni di risposte
  • Autore
    Risposte
    • #43553
      Up
      0
      Down
      ::


      Ciao,
      prova a dare esplicitamente tutti gli estremi degli assi con le opzioni xmin, xmax, ymin, ymax (come probabilmente hai gia fatto per xmin=0).

      Giacomo

    • #43554
      Up
      0
      Down
      ::


      Ciao Giacomo,

      grazie della risposta.

      prova a dare esplicitamente tutti gli estremi degli assi con le opzioni xmin, xmax, ymin, ymax (come probabilmente hai gia fatto per xmin=0)

      È proprio così, ho già provato a fare questo, ma è anche quello che NON voglio fare io manualmente. Il punto è proprio questo, posso fare in modo che pgfplots utilizzi una suddivisione ottimale per il grid (come quella di MATLAB) automaticamente?

      Sò che il risultato sarebbe lo stesso (ovvio), ma se devo fare 20-30 grafici, non mi sembra il caso di mettermi lì a sistemarli uno ad uno manualmente… Se poi ho anche bisogno di modificarli? (Anche se questo, fatto tutto il lavoro prima, sarebbe il minimo).

      Grazie mille,
      Ciao.

    • #43555
      Up
      0
      Down
      ::


      Ciao, opzione che ti serve è
      `enlargelimits=false`
      descritta a pagine 153 e seguenti del manuale di pgfplots.

      Happy TeXing!
      Giacomo

    • #43556
      Up
      0
      Down
      ::


      Ciao a tutti,
      personalmente sono di un avviso diverso riguardo all’automatismo di cui si parla qui. La mia abitudine è quella di controllare accuratamente tutti gli aspetti di ogni singolo grafico che intendo inserire nei documenti che portano la mia firma. Questo spesso mi porta ad escludere le funzionalità che stabiliscono automaticamente limiti, intervalli tra le tacche, eccetera.
      Il mio consiglio è, sì cercare di automatizzare ciò che risulta ripetitivo, ma controllare scrupolosamente tutti i grafici.

      Ciao,
      Agostino

      Allego esempio realizzato con pgfplots.

    • #43557
      Up
      0
      Down
      ::


      Ciao,

      vi ringrazio molto per le vostre risposte. Per Agostino, sono d’accordo con te sul fatto che bisogna ricontrollare manualmente i grafici, ma considera questi fattori:

      1 – pgfplots produce quasi sempre grafici con quel difetto;
      2 – molto raramente, se non mai, mi cambia molto il valore dell’ampiezza degli intervalli scelti (valore che comunque non saprei modificare con pgfplots),

      quindi, se riesco a far tracciare il grid a intervalli di pari ampiezza sullo stesso asse (grazie all’opzione indicatami da g.verticale), dovrò sì riguardare i grafici, ma senza preoccuparmi molto del grid. Questo mi consente di risparmiare tempo e di concentrarmi su altri aspetti in modo da ottenere un risultato di migliore qualità.

      Grazie a tutti,
      Ciao.

    • #43558
      Up
      0
      Down
      ::


      Ciao Giacomo,

      ho provato a utilizzare l’opzione che mi hai indicato, ma il risultato che ottengo è questo:

      Quindi anche attivando quell’opzione il risultato è che gli intervalli del grid non hanno la stessa ampiezza sullo stesso asse. Tra l’altro ho dato un’ulteriore scorsa alla documentazione del pacchetto pgfplots. Piccolo particolare, il manuale che ho io ha 133 pagine… Hai una versione più recente di pgfplots rispetto a quella presente su MiKTeX 2.8?

      Ciao e grazie.

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


        Io con TeX Live 2009 ho un manuale da 235 pagine. Vai su CTAN, li dovresti trovarlo.

        Ciao.

        EDIT: pgfplots.pdf.

      • #43560
        Up
        0
        Down
        ::


        Ciao ansys,

        grazie mille. Il manuale di cui mi hai fornito il link tu è datato Marzo 2010, mentre quello che ho io è datato Febbraio 2009. Vedrò di fare l’aggiornamento.

        Ciao e grazie ancora.

      • #43561
        Up
        0
        Down
        ::


        Ciao,

        ho eseguito l’aggiornamento di MiKTeX 2.8. Ho anche letto il manuale in merito all’opzione che mi è stata indicata da g.verticale, ma mi pare di aver capito che non riguarda l’ampiezza degli intervalli del grid. Quello che vorrei è che, QUALSIASI intervallo di rappresentazione scelga (per intenderci, potrei decidere di far variare il valore dell’ascissa fra 0 e 1.31575), tali intervalli abbiano la medesima ampiezza su uno stesso asse, così come fa MATLAB.

        Il risultato che si può ottenere con pgfplots è indubbiamente eccellente (almeno in molti casi), ma il fatto che il pacchetto non preveda un rappresentazione automatica del grid accettabile mi sembra un grosso difetto per la praticità di utilizzo. O mi sbaglio e quest’opzione c’è? Purtroppo la guida è in inglese e la mia lettura dell’inglese non è poi così rapida…

        Grazie a tutti,
        Ciao

      • #43562
        Up
        0
        Down
        ::


        Ciao a tutti,
        per dimenticanza avevo omesso di allegare il frammento di codice che controlla i ticks e le gridlines del grafico che ho allegato nel mio precedente messaggio.
        Eccolo:
        `
        \begin{axis}[
        width=14cm,height=9cm,
        xmin=0,xmax=6, % estremi assegnati manualmente
        ymin=0,ymax=1.4,
        xmajorgrids,ymajorgrids,
        minor tick num = 1,
        xminorgrids,
        xtick={0,1,…,6}, % ticks assegnati manualmente
        ytick={0,0.2,…,1.4},
        % eccetera.
        ]

        % …

        \end{axis}
        `

        Ciao,
        Agostino

      • #43563
        Up
        0
        Down
        ::


        Ciao Agostino,

        ti ringrazio per aver fonito anche il codice. Purtroppo, però, resta il fatto che pgfplots non fa automaticamente una suddivisione uniforme del grid. Come ho già detto, secondo me, questo è un enorme difetto di praticità. Bisognerà fare un po’ tutto a mano… anche se mi sembra un po’ assurdo.

        Grazie comunque,
        Ciao.

      • #43564
        Up
        0
        Down
        ::


        Effettivamente, se hai questo problema probabilmente devi rinunciare a pgfplots.

        Ironicamente, ciò che sembra assurdo a te potrebbe essere una questione irrilevante per altri.
        Dal mio punto di vista, prima di ‘congelare’ un grafico in uno dei miei documenti, ne controllo:
        1. innanzitutto l’aspetto (ad esempio, se la curva è quella corretta),
        2. poi (e non è una questione minore) la corretta proporzione tra l’altezza e la larghezza e allo stesso tempo le scale degli assi.
        Non credo si possa prescindere da questi controlli.

        Inoltre, ritengo che ciò non contrasti con la filosofia diffusa tra noi utilizzatori di LaTeX, cioè quella che ci spinge a prestare attenzione, e di conseguenza a curare i minimi dettagli dei nostri documenti. Cosa che non si può demandare all’ultima parola di una procedura automatica.

        Ciao,
        Agostino

      • #43565
        Up
        0
        Down
        ::


        Ciao Agostino,

        Ironicamente, ciò che sembra assurdo a te potrebbe essere una questione irrilevante per altri.

        In realtà non credo sia una questione personale, tant’è vero che un programma come MATLAB traccia sempre i grafici con quella proprietà. Si tratta piuttosto di buona resa grafica. Fammi un nome di un programma come MATLAB o Mathematica che tracci i grafici con il grid non uniforme (almeno di default). Un motivo per cui programmi tanto famosi (e costosi) generano dei grafici così ci sarà…

        Inoltre, ritengo che ciò non contrasti con la filosofia diffusa tra noi utilizzatori di LaTeX, cioè quella che ci spinge a prestare attenzione, e di conseguenza a curare i minimi dettagli dei nostri documenti.

        Io sono pienamente d’accordo con la filosofia di LaTeX, e anch’io tengo molto alla resa tipografica e grafica di quello che scrivo. È proprio per questo che preferirei che il grid venisse tracciato uniformemente in maniera automatica. In questo modo, nel controllo manuale che faccio sempre e comunque (di ogni minimo dettaglio come dici tu, te lo garantisco), potrò aspettarmi che nella maggioranza dei casi il grid non debba essere modificato (non controllato, che son due cose ben diverse), e prestare così maggiore attenzione ad altri particolari. Non so se hai mai tracciato grafici con programmi come MATLAB, ma ti posso dire che non ho mai avuto bisogno di toccare il grid, perché viene sempre tracciato in maniera corretta e soprattutto coerente (credo che chi usa LaTeX dovrebbe avere una certa sensibilità alla coerenza, e pgfplots di default non lo traccia coerentemente). Speravo che anche pgfplots potesse fare allo stesso modo (nota che io sto criticando soltanto il grid). Se non è così, non rinuncerò al suo utilizzo a causa di questo, ma penso che questo sia un grosso difetto, come ho detto molte volte.

        … i minimi dettagli dei nostri documenti. Cosa che non si può demandare all’ultima parola di una procedura automatica.

        Esatto, concordo. Ma quello a cui mi riferisco io non è l’ultima parola, ma la prima (che è un momento ben distinto dal primo, mi pare).

        Concludendo, se pgfplots non riesce a fare quello che fanno altri programmi pace, lo si farà a mano, ma non si dica che è una cosa la quale, almeno in prima bozza (che raramente, se non mai, mi è capitato di dover correggere) non possa essere fatta automaticamente.

        Ciao e grazie comunque del tempo speso…

      • #43566
        Up
        0
        Down
        ::


        Ciao,

        per amor del vero, c’è da dire che anche in MATLAB se traccio un grafico (fplot, con plot non sembra capitare mai) da zero a pigreco l’ampiezza del grid lungo x non è uniforme, in quanto l’ultimo tratto risulta più stretto. Io però mi riferisco alla y (sempre, ed è quella più importante perché sulla x il controllo può anch essere fatto a priori, ma sulla y non sempre è possibile) e a tutti quei casi in cui starebbe male la rappresentazione. Mi sembrava ovvio, in quanto altrimenti verrebbe una griglia eccessivamente fitta, ma meglio precisare…

        Ciao.

      • #43567
        Up
        0
        Down
        ::


        In effetti qualcosina su Matlab la conosco (lo uso dal 1994 e lo insegno ai miei studenti di ingegneria da una decina d’anni).
        Non credo che l’algoritmo che fa quello che desideri sia particolarmente sofisticato da essere una prerogativa di un software a pagamento.
        Io credo che la caratteristica che cerchi esista anche in pgfplots
        (che mi risulta essere l’ennesimo strumento di disegno di grafici, copiato da altri strumenti simili) e debba essere cercata nel manuale.

        Good luck,
        Agostino

      • #43568
        Up
        0
        Down
        ::


        Ciao Agostino,

        allora potrai notare la differenza fra l’impostazione del grid.

        Grazie e ciao.

        P.S. Vedi miei ultimi messaggi, non vorrei sembrare parziale…

      • #43569
        Up
        0
        Down
        ::


        Se posso dare un’ulteriore idea, a tal proposito si dovrebbe studiare con calma
        il file “matlab2pgfplots.m” distribuito con il pacchetto pgfplots.
        Chi conosce il linguaggio matlab dovrebbe essere in grado di modificare questo
        script per far fare a pgfplots esattamente ciò che si vede in una finestra del plot
        di matlab. Per la gestione degli elementi grafici di un plot ci si deve ovviamente
        riferire anche all’help di matlab.

        Ciao,
        Agostino

      • #43570
        Up
        0
        Down
        ::


        L’attuale versione di matlab2pgfplots già esporta i limiti e i tick degli assi
        così come visualizzati nella finestra del plot corrente (associata alla variabile
        handle gcf).
        Marco, Il seguente comando al prompt di Matlab dovrebbe fare al caso tuo:
        `matlab2pgfplots( 'mioplot.tex', 'axes',1 )`

        Ciao,
        Agostino

      • #43571
        Up
        0
        Down
        ::


        Ciao Agostino,

        grazie mille, non so che dire…

        Grazie ancora,
        Ciao.

      • #43572
        Up
        0
        Down
        ::


        Ciao Agostino,

        ho provato la function che mi hai gentilmente indicato. Credo che mi sarà piuttosto utile, perché mi farà risparmiare un po’ di tempo, e risolve il mio problema…
        Mi chiedo come hai fatto a trovare in giro per la rete una function così… davvero molto gentile :D.

        Ciao.

      • #43573
        Up
        0
        Down
        ::


        Beh, ti rispondo come come direbbero i nostri TeX guru:
        “Mi è bastato leggere la documentazione!” (di pgfplots).

      • #43574
        Up
        0
        Down
        ::


        Ciao Agostino,

        ora che l’ho cercato sul manuale di pgfplots l’ho trovato anch’io. Per il perché non l’abbia trovata io leggendomi il manuale rimando al mio messaggio datato Dom Apr 04, 2010 4:06 pm, di questo topic (ultima riga).

        Ti ringrazio molto.

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

    Go to top