pgfplots \addplot[]file{nomefile.dat}: intervallare markers

  • Creatore
    Topic
  • #85908
    Up
    0
    Down
    ::


    Salve a tutti,

    sto utilizzando da poco il pacchetto pgfplots per creare grafici di alta qualità tipografica.
    Uso il comando \addplot[black,mark=*]file{nomefile.dat} per creare un grafico rappresentante i dati contenuti nel file nomefile.dat contraddistinguendoli con un marcatore circolare pieno.
    In questo modo per ogni coppia di cooridnate presenti nel file LaTeX inserisce un marcatore.
    Purtroppo i dati nel file sono molti e corrispondono a punti molto vicini tra di loro. Il risultato è che i marcatori sono sovrapposti uno all’altro e non si capisce neanche che forma abbiano.
    Come faccio a inserire i marcatori non per tutti i punti, ma magari solo ogni 20 punti letti dal file?

    grazie

    P.S. In realtà l’uso che vorrei fare dei markers è forse leggermente diverso da quello per cui sono stati pensati. Infatti usandoli come vorrei mi servirebbero solo per identificare un andamento e non per identificare tutti i punti dell’andamento. Potrei ottenere questa cosa usando le opzioni dashed, dotted ecc. Purtroppo non posso utilizzare queste opzioni per ragioni lunghe da spiegare.

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #85909
      Up
      0
      Down
      ::


      Benvenuto nel forum! 🙂
      L’opzione che ti serve è [tt]each nth point[/tt] (pagina 301 del manuale). Se vuoi mostrare solo un andamento non sarebbe meglio fare un fitting dei dati? Ovviamente tutto dipende da cosa stai rappresentando

      Ciao
      Fra

    • #85910
      Liverpool
      Partecipante
        Up
        0
        Down
        ::


        1) puoi usare [tt]each nth point=numero[/tt] per prendere soltanto un valore ogni [tt]numero[/tt] dal file. In questo modo risparmi memoria, ma modifichi anche la curva sotto i marcatori perché ignori alcuni valori.
        2) puoi usare [tt]mark repeat=numero[/tt] per ripetere i marcatori ogni [tt]numero[/tt] campioni del file. Penso che sia quello che volevi.
        3) puoi creare uno stile personalizzato sfruttanto la chiave [tt]dash pattern[/tt]:
        `\documentclass{standalone}
        \usepackage{pgfplots}
        \pgfplotsset{compat=1.8,
        pallozzi/.style={line cap=round,
        line width=5pt,
        dash pattern=on 0pt off 25pt}
        }
        \begin{document}
        \begin{tikzpicture}
        \begin{axis}
        \addplot [pallozzi] {exp(x)};
        \end{axis}
        \end{tikzpicture}
        \end{document}`
        In questo caso, puoi agire su [tt]line width[/tt] per cambiare le dimensioni dei pallozzi e su [tt]off[/tt] per distanziarli maggiormente. Nota che il risultato è diverso dal punto 2, perché i marcatori sono equidistanti rispetto al sostegno della curva, non rispetto al dominio.

        4) Ancora meglio, puoi usare la libreria [tt]decorations.markings[/tt] di TikZ con lo stesso risultato del punto 3, ma senza dover tracciare a parte la curva:
        `\documentclass

        {standalone}
        \usepackage{pgfplots}
        \usetikzlibrary{decorations.markings}
        \pgfplotsset{compat=1.8,
        pallozzi/.style={decoration={markings,
        mark=between positions 0 and 1 step 25pt with {
        \fill (0,0) circle (2.5pt);}
        },
        postaction=decorate}
        }
        \begin{document}
        \begin{tikzpicture}
        \begin{axis}
        \addplot [blue, mark=*, mark repeat=5] {exp(x)};
        \addplot [red, pallozzi] {exp(x)+20};
        \end{axis}
        \end{tikzpicture}
        \end{document}`

        Ciao

      • #85911
        Up
        0
        Down
        ::


        Problema risolto. Grazie mille per le veloci e efficaci risposte!

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

    Go to top