- Questo topic ha 22 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 16 anni, 5 mesi fa da
Marco87.
-
CreatoreTopic
-
1 Aprile 2010 alle 17:45 #43552::
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.
-
CreatoreTopic
-
AutoreRisposte
-
-
1 Aprile 2010 alle 21:46 #43553
-
2 Aprile 2010 alle 13:13 #43554::
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.
-
2 Aprile 2010 alle 14:12 #43555
-
2 Aprile 2010 alle 15:44 #43556::
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,
AgostinoAllego esempio realizzato con pgfplots.

-
2 Aprile 2010 alle 16:21 #43557::
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.
-
3 Aprile 2010 alle 12:04 #43558::
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.
-
3 Aprile 2010 alle 12:47 #43559::
Io con TeX Live 2009 ho un manuale da 235 pagine. Vai su CTAN, li dovresti trovarlo.Ciao.
EDIT: pgfplots.pdf.
-
3 Aprile 2010 alle 15:01 #43560
-
4 Aprile 2010 alle 15:06 #43561::
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
-
5 Aprile 2010 alle 13:23 #43562::
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
-
5 Aprile 2010 alle 14:14 #43563::
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.
-
5 Aprile 2010 alle 16:15 #43564::
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
-
5 Aprile 2010 alle 16:44 #43565::
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…
-
5 Aprile 2010 alle 17:00 #43566::
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.
-
5 Aprile 2010 alle 17:10 #43567::
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
-
5 Aprile 2010 alle 17:12 #43568
-
6 Aprile 2010 alle 8:28 #43569::
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
-
6 Aprile 2010 alle 9:55 #43570::
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
-
6 Aprile 2010 alle 12:16 #43571
-
6 Aprile 2010 alle 12:59 #43572
-
6 Aprile 2010 alle 13:06 #43573
-
6 Aprile 2010 alle 13:09 #43574
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.