- Questo topic ha 10 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 14 anni, 6 mesi fa da
Liverpool.
-
CreatoreTopic
-
8 Marzo 2012 alle 10:06 #70773::
Devo tracciare con pgfplots un grafico con molti punti che putroppo al momento non posso ridurre. Vorrei una linea tratteggiata e per questo uso l’opzione [tt]dashed[/tt]. Il pdf generato si vede bene con il visualizzatore integrato di TeXstudio, ma quando passo ad Acrobat (e quindi penso anche al reader), la linea risulta continua anche al massimo ingrandimento. Il problema è come ottenere una linea tratteggiata con l’opzione [tt]dashed[/tt] anche in Acrobat.
Vi posto un esempio minimo che riproduce il problema. Purtroppo non riesco ad allegare il pdf, probabilmente per via delle dimensioni (400 kB).Grazie mille
`\documentclass{minimal}
\usepackage{pgfplots}\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[samples=60000, no marks, dashed] {x};
\end{axis}
\end{tikzpicture}
\end{document}`
-
CreatoreTopic
-
AutoreRisposte
-
-
8 Marzo 2012 alle 12:08 #70774::
Liverpool” post=70012Devo tracciare con pgfplots un grafico con molti punti che putroppo al momento non posso ridurre. Vorrei una linea tratteggiata e per questo uso l’opzione [tt]dashed[/tt]. Il pdf generato si vede bene con il visualizzatore integrato di TeXstudio, ma quando passo ad Acrobat (e quindi penso anche al reader), la linea risulta continua anche al massimo ingrandimento. Il problema è come ottenere una linea tratteggiata con l’opzione [tt]dashed[/tt] anche in Acrobat.
Vi posto un esempio minimo che riproduce il problema. Purtroppo non riesco ad allegare il pdf, probabilmente per via delle dimensioni (400 kB).Grazie mille
`\documentclass{minimal}
\usepackage{pgfplots}\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[samples=60000, no marks, dashed] {x};
\end{axis}
\end{tikzpicture}
\end{document}`Il tuo codice d’esempio produce un out of memory.
Comunque, occorre sempre ricercare l’equilibrio tra fedeltà di rappresentazione matematica e risorse di calcolo.
Penso quindi che il tuo problema vada approfondito con ulteriori informazioni.
Un saluto.
R.
-
8 Marzo 2012 alle 14:19 #70775::
robitex” post=70019Il tuo codice d’esempio produce un out of memory
Quello della memoria è un problema noto di pgfplots. Se ne parla nel paragrafo 6.2 del manuale (del quale ho adottato la soluzione) e se n’è parlato anche su questo forum.
robitex” post=70019Penso quindi che il tuo problema vada approfondito con ulteriori informazioni.
Non capisco di quali informazioni abbia bisogno. Se vuoi, posso entrare nel caso specifico, ma già quell’esempio banale mostra il problema, perciò credo che tutto il necessario sia nel primo intervento.
Ciao e grazie
-
8 Marzo 2012 alle 14:44 #70776::
La funzione che devi rappresentare potrà essere anche molto complicata, ma 60000 punti sono decisamente troppi; la tua retta dell’esempio minimale con 60000 punti satira la memoria; con 6000 punti viene benissimo, anche se per clacolarli tutti di mette un bel po’.Il punto è questo: se disegni qualunque linea, su una pagina ila cui gabbia di stampa sia dell’ordine dei 150mm per 240mm, e metti la tua fifuaa con le proporzioni normali, ciò con un’altezza minore dell’altezza, hai un rettangolo che può avere un 170mm di diagonale; diciamo che una curva complicata possa avere uno svilupp di 5 volte la lunghezza della diagonale: arriviamo a 850mm; mi voglio rovinare, facciamo 1000mm. dunque credo che 1000 nodi per le curve di Bézier che usa pgfplots per disegnare al curva siano molto più che sufficienti; se anche unisse i punti con dei segmentini, sarebbero segmentini lunghi 1mm e gli spigoli fra un segmentino e l’altro sarebbero impercettibili.
Perciò devi trovare il modo di ridurre i punti e di farti sempre un calcolo alla buona per sapere quanti punti ti possano occorrere; come dice @robitex, bisogna adattare le prestazioni degli strumenti di calcolo alle esigenze del risultato (e viceversa) e non bisogna mai esagerare in un verso o nell’altro.;
nel tuo caso 60000 nodi significano per la mia ipotetica curva che si sviluppa su una lunghezza di 1m 60 punti al millimetro che graficamente sono assolutamente esagerati per due motivi: primo: la finezza dello schermo o della stampa non consente una densità così alta: lo schermo ad alta definizione con un centinaio di pixel al pollice vuol dire quasi 4 pixel al millimetro; lo stampato con una densità di 600pixel al pollice vuol dire quasi 25 pixel al millimetro. Secondo: i nodi sono collegati da curve di Bézier il cui scopo è appunto quello di usare meno nodi e di raccordarli con curve “dolci” che si uniscono fra loro con la continuità della tangente.Dunque per entrambi i motivi 1000 nodi sono più che sufficienti per qualunque curva. Sta ora a te trovare il modo di usare uno script per “decimare” pesantemente i tuoi 60000 nodi e vedrai che i problemi di visualizzazione spariscono, come sono spariti a me quando ho visulizzato il tuo esempio minimale avendo ridotto i nodi a 6000 (già una schioppettata per una curva così semplice).
-
8 Marzo 2012 alle 15:21 #70777::
Robitex e Claudio avete perfettamente ragione. Io stesso in questo intervento sul forum avevo sollevato le stesse osservazioni e mai avrei ritenuto di potermi trovare nella stessa situazione di clidre. Sono consapevole che 60000 punti sono uno spreco e infatti era mia intenzione generare il pdf e convertirlo in jpeg per eliminare ogni inconveniente.
In ogni caso, resta la domanda: perché il visualizzatore di TeXstudio si comporta bene e Acrobat no?
La situazione è questa. Ho un file di dati generato da un sensore di vibrazione installato in prossimità di una turbina per lo studio della stabilità della struttura. La relativa traccia è piuttosto complessa e con dei picchi, essendo variabile la velocità del rotore. Voi direste di ridurre il numero di punti. Benissimo: come faccio a sapere quali punti sono superflui e non altererebbero significativamente il grafico? Non posso decidere arbitrariamente di prendere un punto ogni tot, perché rischierei di alterare la traccia. Dovrei mettermi a spulicare i dati ad uno ad uno per venirne fuori. A questo punto avevo pensato di far prima ad includerli tutti, generare il grafico, rasterizzarlo e inserirlo nel documento, ma si presenta il problema in oggetto.
Voi come fareste?Grazie mille
OldClaudio” post=70023Secondo: i nodi sono collegati da curve di Bézier il cui scopo è appunto quello di usare meno nodi e di raccordarli con curve “dolci” che si uniscono fra loro con la continuità della tangente.
Sei sicuro che pgfplots non usi la semplicissima interpolazione lineare, come i software di calcolo numerico d’altra parte?
-
8 Marzo 2012 alle 15:27 #70778::
Scusate,
chiedevo ulteriori informazioni perché l’esempio minimo mi pareva celasse le effettive esigenze del grafico dell’utente.
60000 punti infatti, sono un esagerazione ma potrebbero essere anche pochi.
Per esempio, funzioni come la Gamma di Eulero non scherzano quanto a variabilità all’avvicinarsi agli asintoti.
Non è neanche dato di sapere se le curve sono noto in forma chiusa o per punti.
R.
-
8 Marzo 2012 alle 15:31 #70779::
robitex” post=70026Scusate,
chiedevo ulteriori informazioni perché l’esempio minimo mi pareva celasse le effettive esigenze del grafico dell’utente.Non ti devi scusare. Ho chiarito la situazione nell’intervento precedente. Quello che avevo postato all’inizio era un esempio banale messo su per riprodurre il problema.
Grazie
-
8 Marzo 2012 alle 15:50 #70780::
Liverpool” post=70025Robitex e Claudio avete perfettamente ragione. Io stesso in questo intervento sul forum avevo sollevato le stesse osservazioni e mai avrei ritenuto di potermi trovare nella stessa situazione di clidre. Sono consapevole che 60000 punti sono uno spreco e infatti era mia intenzione generare il pdf e convertirlo in jpeg per eliminare ogni inconveniente.
In ogni caso, resta la domanda: perché il visualizzatore di TeXstudio si comporta bene e Acrobat no?
La situazione è questa. Ho un file di dati generato da un sensore di vibrazione installato in prossimità di una turbina per lo studio della stabilità della struttura. La relativa traccia è piuttosto complessa e con dei picchi, essendo variabile la velocità del rotore. Voi direste di ridurre il numero di punti. Benissimo: come faccio a sapere quali punti sono superflui e non altererebbero significativamente il grafico? Non posso decidere arbitrariamente di prendere un punto ogni tot, perché rischierei di alterare la traccia. Dovrei mettermi a spulicare i dati ad uno ad uno per venirne fuori. A questo punto avevo pensato di far prima ad includerli tutti, generare il grafico, rasterizzarlo e inserirlo nel documento, ma si presenta il problema in oggetto.
Voi come fareste?Grazie mille
Ecco, così ci si orienta meglio, un problema del resto interessante…
Io farei di tutto per evitare i formati a punti come jpeg. Ricordo di aver lavorato con pgfplots su un accelerogramma artificiale dove l’andamento dei punti è quello che è, ma senza riscontrare problemi.
I punti erano 2500 per 25 secondi di registrazione e non ho riscontrato problemi con curve a tratteggio. Ti funziona restringendo l’intervallo temporale?
Un saluto.
R.
-
8 Marzo 2012 alle 16:08 #70781
-
8 Marzo 2012 alle 16:26 #70782
-
8 Marzo 2012 alle 16:58 #70783::
robitex” post=70033
Provare ad assemblare n grafici con n \addplot spezzando in n tronconi l’input?Perfetto. Così ho risolto. Bisogna perdere un po’ di tempo a preparare i dati, ma alla fine funziona.
Ma perché funziona? Il numero di punti per pollice non è lo stesso di prima?
E poi c’è sempre il mistero di Acrobat 😕Grazie mille
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.