Asse invertito con TiKZ

  • Creatore
    Topic
  • #57690
    Up
    0
    Down
    ::


    Sto disegnando un grafico usando il pacchetto TiKZ. Ho la necessità di far procedere la scala sull’asse delle ascisse da destra verso sinistra. Come posso fare? Questo è il codice che ho implementato per il diagramma in questione:
    `\usepackage{tikz}
    \usetikzlibrary{datavisualization.formats.functions}

    \begin{tikzpicture}[scale=0.75]
    \datavisualization [scientific axes, visualize as smooth line/.list={primo}, x axis={label=$\delta$ / ppm,ticks={step=1, minor steps between steps=10},length=15cm},y axis={ticks={step=1},length=5cm},data/format=function]
    data [primo] {
    var x : interval [0:5];
    func y = 1/(2.51)*exp(-(\value x – 3)^2/(2*(0.02)^2));
    };
    \end{tikzpicture}
    `
    Grazie anticipatamente

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #57691
      Up
      0
      Down
      ::

      Sto disegnando un grafico usando il pacchetto TiKZ. Ho la necessità di far procedere la scala sull’asse delle ascisse da destra verso sinistra. Come posso fare? Questo è il codice che ho implementato per il diagramma in questione:
      `\usepackage{tikz}
      \usetikzlibrary{datavisualization.formats.functions}

      \begin{tikzpicture}[scale=0.75]
      \datavisualization [scientific axes, visualize as smooth line/.list={primo}, x axis={label=$\delta$ / ppm,ticks={step=1, minor steps between steps=10},length=15cm},y axis={ticks={step=1},length=5cm},data/format=function]
      data [primo] {
      var x : interval [0:5];
      func y = 1/(2.51)*exp(-(\value x – 3)^2/(2*(0.02)^2));
      };
      \end{tikzpicture}
      `
      Grazie anticipatamente

      Ciao, per comporre grafici non ti conviene usare pgfplots, che poggia su tikz ma fornisce l’ambiente “axis”?In questo modo è facile ottenere ciò che chiedi e ci sono un sacco di opzioni utili per personalizzare la resa del grafico. Questo è un esempio riportato nella documentazione:
      `\begin{tikzpicture}
      \begin{axis}[ylabel=$y$ \emph{decreasing} $\to$, y dir=reverse]
      \addplot {x^2};
      \end{axis}
      \end{tikzpicture}`
      Caricando il pacchetto pgfplots non serve caricare anche tikz!

      Ciao
      Fra

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

        Sto disegnando un grafico usando il pacchetto TiKZ. Ho la necessità di far procedere la scala sull’asse delle ascisse da destra verso sinistra. Come posso fare? Questo è il codice che ho implementato per il diagramma in questione:
        `\usepackage{tikz}
        \usetikzlibrary{datavisualization.formats.functions}

        \begin{tikzpicture}[scale=0.75]
        \datavisualization [scientific axes, visualize as smooth line/.list={primo}, x axis={label=$\delta$ / ppm,ticks={step=1, minor steps between steps=10},length=15cm},y axis={ticks={step=1},length=5cm},data/format=function]
        data [primo] {
        var x : interval [0:5];
        func y = 1/(2.51)*exp(-(\value x – 3)^2/(2*(0.02)^2));
        };
        \end{tikzpicture}
        `
        Grazie anticipatamente

        Infatti. Credo che dovresti passare a pgfplots che è un pacchetto basato su tikz progettato per disegnare grafici.
        Ecco il codice per la tua funzione:
        `
        \documentclass{article}
        \usepackage{pgfplots}

        \begin{document}
        \begin{tikzpicture}[scale=0.75]
        \begin{axis}[
        % etichette grafico
        xlabel=$\delta$/ppm,
        % linee di plottaggio
        no markers,
        % dominio 2D
        domain=2.8:3.2,
        smooth,
        samples=100,
        % dimensioni tela
        width=8cm,
        height=13cm
        ]

        \addplot expression
        {(1/2.51)*exp(-((x-3)^2)/(2*0.02^2))};

        \end{axis}
        \end{tikzpicture}
        \end{document}`

        Saluti.

      • #57693
        Up
        0
        Down
        ::

        Infatti. Credo che dovresti passare a pgfplots che è un pacchetto basato su tikz progettato per disegnare grafici.
        Ecco il codice per la tua funzione:
        `
        \documentclass{article}
        \usepackage{pgfplots}

        \begin{document}
        \begin{tikzpicture}[scale=0.75]
        \begin{axis}[
        % etichette grafico
        xlabel=$\delta$/ppm,
        % linee di plottaggio
        no markers,
        % dominio 2D
        domain=2.8:3.2,
        smooth,
        samples=100,
        % dimensioni tela
        width=8cm,
        height=13cm
        ]

        \addplot expression
        {(1/2.51)*exp(-((x-3)^2)/(2*0.02^2))};

        \end{axis}
        \end{tikzpicture}
        \end{document}`

        Saluti.

        Grazie per il prezioso consiglio, ho già scaricato pgfplots e relativo manuale. Nonostante ciò, non ho ancora trovato risposta al seguente dubbio: Come si può definire con pgfplots l’unità principale (step) e un’eventuale unità secondaria (intesa come suddivisone dello step principale in un numero di sottointervalli scelto dall’utente) per i singoli assi? P. es., se l’unità principale è 1 cm, voglio che sull’asse compaiono anche le tacche, più piccole, relative ai mm e che ogni 5 mm sia associata una tacca più grande, ma comunque più piccola di quella relativa ai cm. Come si potrebbe fare?

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

          Infatti. Credo che dovresti passare a pgfplots che è un pacchetto basato su tikz progettato per disegnare grafici.
          Ecco il codice per la tua funzione:
          `
          \documentclass{article}
          \usepackage{pgfplots}

          \begin{document}
          \begin{tikzpicture}[scale=0.75]
          \begin{axis}[
          % etichette grafico
          xlabel=$\delta$/ppm,
          % linee di plottaggio
          no markers,
          % dominio 2D
          domain=2.8:3.2,
          smooth,
          samples=100,
          % dimensioni tela
          width=8cm,
          height=13cm
          ]

          \addplot[color=black, line width=0.5pt] expression
          {(1/2.51)*exp(-((x-3)^2)/(2*0.02^2))};

          \end{axis}
          \end{tikzpicture}
          \end{document}`

          Saluti.

          Grazie per il prezioso consiglio, ho già scaricato pgfplots e relativo manuale. Nonostante ciò, non ho ancora trovato risposta al seguente dubbio: Come si può definire con pgfplots l’unità principale (step) e un’eventuale unità secondaria (intesa come suddivisone dello step principale in un numero di sottointervalli scelto dall’utente) per i singoli assi? P. es., se l’unità principale è 1 cm, voglio che sull’asse compaiono anche le tacche, più piccole, relative ai mm e che ogni 5 mm sia associata una tacca più grande, ma comunque più piccola di quella relativa ai cm. Come si potrebbe fare?

          Semplice,
          imposti le dimensioni del grafico con le opzioni width ed height. A questo punto conosci quanto vale la lunghezza 1 sull’ascissa e sull’ordinata usufruendo dei valori di xmin, xmax ed ymin ed ymax rispettivamente.
          A questo punto imposti l’opzione giusta all’ambente axis, ovvero le grid option (per esempio grid=both).
          Se pgfplots non azzecca il tick principale e secondario allora lo puoi impostare manualemente con le opzioni xtick e xticklabels e corrispondenti per y.

          Ad esempio se imposto:
          `width=10cm,
          height=10cm,
          xmin=0,
          xmax= 5,
          ymin=-10,
          ymax=10,`
          allora su x l’unità matematica varrà 10cm/5=2cm, mentre su y avrai 10cm/20=0.5cm.

          (Lettura più approfondita del manuale necessaria)
          Bye

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

      Go to top