Problema con Tikzpicture

  • Creatore
    Topic
  • #116137
    Up
    0
    Down
    ::


    Buonasera a tutti, sono nuovo in questo forum. Ho letto le varie guide ma non riesco a risolvere un problema che riscontro nella stesura della tesi.
    Cerco di essere il più breve possibile. Ho creato due grafici con l’ambiente tikzpicture, uno di fianco all’altro, il problema è che riesco a metterli all’inizio della pagina ma non al centro. Ho provato in diversi modi ma niente. Per farvi capire vi allego anche la foto di come esce ora. Come vedete ho i due grafici spostati verso destra invece li vorrei al centro allineati con il testo. Vi posto il codice.

    \begin{figure}
    \centering
    \begin{tikzpicture}[every axis/.style={width=7cm}]

    \begin{axis}[name=axis1] %axis 1
    \addplot [mark=*,only marks] coordinates {
    (0, -3)
    (1, -1)
    (2, 1)
    (3, 3)
    };

    \end{axis}

    \begin{axis}[ %axis 2
    xshift = 3in,
    name=axis2]
    \addplot [mark=*] coordinates {
    (0, -3)
    (1, -1)
    (2, 1)
    (3, 3)
    };

    \end{axis}

    \begin{scope}[every node/.style={text width=7cm,align=left}]
    \node [below] at (axis1.south) {\captionof{figure}{First caption}};
    \node [below] at (axis2.south) {\captionof{figure}{Second caption}};
    \end{scope}
    \end{tikzpicture}
    \end{figure}

    Grazie mille in anticipo a tutti!

    Attachments:
    You must be logged in to view attached files.
Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #116138
      Up
      0
      Down
      ::


      Benvenuto nel forum.

      Il problema è che la somma della larghezza dei due grafici è superiore alla gabbia del testo. La soluzione più veloce è usare un

      `\resizebox{h}{v}{text}`

      Per esempio:

      `\documentclass{article}

      \usepackage{caption,tikz,pgfplots,kantlipsum}

      \begin{document}
      \kant

      \begin{figure}
      \centering
      \resizebox{\textwidth}{!}{\begin{tikzpicture}[every axis/.style={width=7cm}]

      \begin{axis}[name=axis1] %axis 1
      \addplot [mark=*,only marks] coordinates {
      (0, -3)
      (1, -1)
      (2, 1)
      (3, 3)
      };

      \end{axis}

      \begin{axis}[ %axis 2
      xshift = 3in,
      name=axis2]
      \addplot [mark=*] coordinates {
      (0, -3)
      (1, -1)
      (2, 1)
      (3, 3)
      };

      \end{axis}

      \begin{scope}[every node/.style={text width=7cm,align=left}]
      \node [below] at (axis1.south) {\captionof{figure}{First caption}};
      \node [below] at (axis2.south) {\captionof{figure}{Second caption}};
      \end{scope}
      \end{tikzpicture}
      }
      \end{figure}
      \kant
      \end{document}`

      Ciao
      Claudio

    • #116139
      Up
      0
      Down
      ::

      cfiandra” post=116553Benvenuto nel forum.

      Il problema è che la somma della larghezza dei due grafici è superiore alla gabbia del testo. La soluzione più veloce è usare un

      `\resizebox{h}{v}{text}`

      Per esempio:

      `\documentclass{article}

      \usepackage{caption,tikz,pgfplots,kantlipsum}

      \begin{document}
      \kant

      \begin{figure}
      \centering
      \resizebox{\textwidth}{!}{\begin{tikzpicture}[every axis/.style={width=7cm}]

      \begin{axis}[name=axis1] %axis 1
      \addplot [mark=*,only marks] coordinates {
      (0, -3)
      (1, -1)
      (2, 1)
      (3, 3)
      };

      \end{axis}

      \begin{axis}[ %axis 2
      xshift = 3in,
      name=axis2]
      \addplot [mark=*] coordinates {
      (0, -3)
      (1, -1)
      (2, 1)
      (3, 3)
      };

      \end{axis}

      \begin{scope}[every node/.style={text width=7cm,align=left}]
      \node [below] at (axis1.south) {\captionof{figure}{First caption}};
      \node [below] at (axis2.south) {\captionof{figure}{Second caption}};
      \end{scope}
      \end{tikzpicture}
      }
      \end{figure}
      \kant
      \end{document}`

      Ciao
      Claudio

      Grazie mille Claudio! Ora funziona. Più avanti devo fare una cosa simile ma con 4 grafici, spero di riuscirci da solo.
      Grazie ancora per la tempestiva risposta e buon fine settimana.

    • #116140
      Up
      0
      Down
      ::

      Michael1997″ post=116557 Grazie mille Claudio! Ora funziona. Più avanti devo fare una cosa simile ma con 4 grafici, spero di riuscirci da solo.
      Grazie ancora per la tempestiva risposta e buon fine settimana.

      Prova a vedere [tt]groupplots[/tt] con pgfplots.

      Ciao
      Claudio

    • #116141
      Up
      0
      Down
      ::

      cfiandra” post=116562

      Grazie mille Claudio! Ora funziona. Più avanti devo fare una cosa simile ma con 4 grafici, spero di riuscirci da solo.
      Grazie ancora per la tempestiva risposta e buon fine settimana.

      Prova a vedere [tt]groupplots[/tt] con pgfplots.

      Ciao
      Claudio

      Ciao Claudio, non sono riuscito con groupplots ma ce l’ho fatta con matrix. Però non riesco a risolvere lo stesso problema che avevo prima. Ovvero non riesco a mettere al centro il gruppo dei quattro grafici. Cioè allineati al centro, con il testo che c’è prima di loro. Ti posto il codice, riesci a darmi una mano? Te ne sarei davvero grato!
      `\begin{tikzpicture}

      \matrix {
      \begin{axis}
      \addplot {x};
      \end{axis}
      &

      \begin{axis}
      \addplot {x^2};
      \end{axis}
      \\

      \begin{axis}[xlabel=$x$,xlabel style={font=\Huge}]
      \addplot {x^3};
      \end{axis}
      &
      \begin{axis}
      \addplot {x^4};
      \end{axis}
      \\ };
      \end{tikzpicture}`Grazie mille!

    • #116142
      Up
      0
      Down
      ::

      Michael1997″ post=116563

      [quote=”Michael1997″ post=116557] Grazie mille Claudio! Ora funziona. Più avanti devo fare una cosa simile ma con 4 grafici, spero di riuscirci da solo.
      Grazie ancora per la tempestiva risposta e buon fine settimana.

      Prova a vedere [tt]groupplots[/tt] con pgfplots.

      Ciao
      Claudio

      Ciao Claudio, non sono riuscito con groupplots ma ce l’ho fatta con matrix. Però non riesco a risolvere lo stesso problema che avevo prima. Ovvero non riesco a mettere al centro il gruppo dei quattro grafici. Cioè allineati al centro, con il testo che c’è prima di loro. Ti posto il codice, riesci a darmi una mano? Te ne sarei davvero grato!
      `\begin{tikzpicture}

      \matrix {
      \begin{axis}
      \addplot {x};
      \end{axis}
      &

      \begin{axis}
      \addplot {x^2};
      \end{axis}
      \\

      \begin{axis}[xlabel=$x$,xlabel style={font=\Huge}]
      \addplot {x^3};
      \end{axis}
      &
      \begin{axis}
      \addplot {x^4};
      \end{axis}
      \\ };
      \end{tikzpicture}`Grazie mille![/quote] Prova con: `\documentclass{article}

      \usepackage{caption,tikz,pgfplots,kantlipsum}
      \usepgfplotslibrary{groupplots}
      \pgfplotsset{compat=1.16}% l'ultima versione di pgfplots

      \begin{document}
      \kant

      \begin{figure}
      \centering
      \resizebox{\textwidth}{!}{\begin{tikzpicture}
      \begin{groupplot}[group style={group size=2 by 2, horizontal sep=2cm, vertical sep=2cm}]

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.0004, ymax=0.0012,
      ylabel={$\phi_{\mathrm{i}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(0,0.0005)(15000,0.001)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.2, ymax=1.2,
      ylabel={$h(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(0,0.5)(15000,1)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.0004, ymax=0.0012,
      ylabel={$\phi_{\mathrm{o}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(1000,0.0004)(15000,0.001)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=2000, ymax=12000,
      ylabel={$p_{\mathrm{i}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(5000,2010)(19000,11500)};

      \end{groupplot}

      \end{tikzpicture}
      }
      \end{figure}
      \kant
      \end{document}` e controlla la libreria groupplots sul manuale di pgfplots (da terminale [tt]texdoc pgfplots[/tt]).

      Ciao
      Claudio

    • #116143
      Up
      0
      Down
      ::

      cfiandra” post=116564

      [quote=”cfiandra” post=116562][quote=”Michael1997″ post=116557] Grazie mille Claudio! Ora funziona. Più avanti devo fare una cosa simile ma con 4 grafici, spero di riuscirci da solo.
      Grazie ancora per la tempestiva risposta e buon fine settimana.

      Prova a vedere [tt]groupplots[/tt] con pgfplots.

      Ciao
      Claudio

      Ciao Claudio, non sono riuscito con groupplots ma ce l’ho fatta con matrix. Però non riesco a risolvere lo stesso problema che avevo prima. Ovvero non riesco a mettere al centro il gruppo dei quattro grafici. Cioè allineati al centro, con il testo che c’è prima di loro. Ti posto il codice, riesci a darmi una mano? Te ne sarei davvero grato!
      `\begin{tikzpicture}

      \matrix {
      \begin{axis}
      \addplot {x};
      \end{axis}
      &

      \begin{axis}
      \addplot {x^2};
      \end{axis}
      \\

      \begin{axis}[xlabel=$x$,xlabel style={font=\Huge}]
      \addplot {x^3};
      \end{axis}
      &
      \begin{axis}
      \addplot {x^4};
      \end{axis}
      \\ };
      \end{tikzpicture}`Grazie mille![/quote] Prova con: `\documentclass{article}

      \usepackage{caption,tikz,pgfplots,kantlipsum}
      \usepgfplotslibrary{groupplots}
      \pgfplotsset{compat=1.16}% l'ultima versione di pgfplots

      \begin{document}
      \kant

      \begin{figure}
      \centering
      \resizebox{\textwidth}{!}{\begin{tikzpicture}
      \begin{groupplot}[group style={group size=2 by 2, horizontal sep=2cm, vertical sep=2cm}]

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.0004, ymax=0.0012,
      ylabel={$\phi_{\mathrm{i}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(0,0.0005)(15000,0.001)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.2, ymax=1.2,
      ylabel={$h(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(0,0.5)(15000,1)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=0.0004, ymax=0.0012,
      ylabel={$\phi_{\mathrm{o}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(1000,0.0004)(15000,0.001)};

      \nextgroupplot[%
      width=3cm,
      height=3cm,
      scale only axis,
      every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
      xmin=0, xmax=20000,
      xlabel={$t$},
      xmajorgrids,
      xminorgrids,
      every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
      ymin=2000, ymax=12000,
      ylabel={$p_{\mathrm{i}}(t)$},
      ymajorgrids,
      yminorgrids]
      \addplot coordinates{(5000,2010)(19000,11500)};

      \end{groupplot}

      \end{tikzpicture}
      }
      \end{figure}
      \kant
      \end{document}` e controlla la libreria groupplots sul manuale di pgfplots (da terminale [tt]texdoc pgfplots[/tt]).

      Ciao
      Claudio[/quote]

      Cosi funziona, grazie mille! L’unico problema è che me lo mette all’inizio della pagina e non sotto il titolo come scritto da codice.

      \newpage

      \subsection{Successioni indeterminate}
      \begin{definition}

      Una successione \{$a_n$\} si dice indeterminata se non è ne convergente ne divergente. Cioè il $\lim_{n \to +\infty}a_n $ non esiste \\

      \end{definition}

      \subsection{Grafici a confronto} \vspace{2cm}

      \begin{figure}
      \centering
      \resizebox{\textwidth}{!}{\begin{tikzpicture}
      \begin{groupplot}[group style={group size=2 by 2, horizontal sep=2cm, vertical sep=2cm}]

      \nextgroupplot[%
      ymin = -1.5, ymax = 3, axis x line=middle, axis y line=left, width = 6cm, height = 6cm, title = ciao]
      \addplot [mark=*,only marks] coordinates {
      (0, -1)
      (1, 0)
      (2, 1)
      (3, 2)
      };

      \nextgroupplot[%
      ymin = -3, ymax = 3, axis x line=middle, axis y line=left, width = 6cm, height = 6cm, title = ciao]
      \addplot [mark=*,only marks] coordinates {
      (0, -1)
      (1, -2)
      (2, -3)
      (3, -4)
      };

      \nextgroupplot[ymin = -1.5, ymax = 4, axis x line=middle, axis y line=left, width = 6cm, height = 6cm]

      \addplot [mark=*,only marks] coordinates {
      (1, 1.5)
      (0, 3)
      (2, 2.3)
      (3, 1.8)

      };
      \draw[gray] (axis cs: 3.85,2) — (axis cs: 0,2);

      \nextgroupplot[ ymin = -2, ymax = 3, axis x line=middle, axis y line=left, width = 6cm, height = 6cm]
      \addplot [mark=*,only marks] coordinates {
      (1, -1)
      (0, 1)
      (2, 1)
      (3, -1)

      };

      \end{groupplot}
      \end{tikzpicture}
      }
      \end{figure}

      Attachments:
      You must be logged in to view attached files.
    • #116144
      Up
      0
      Down
      ::


      Ho risolto. Ho usato il pacchetto float e modificato il begin cosi:

      \begin{figure}[H]

      Grazie mille ancora per prima!
      Buona giornata 🙂

    • #116145
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Sì, certo con H ci riesci, ma commetti un errore tiografico: infatti in tipografia non si inserisce mai qualsiasi cosa fuori testo dopo un titolo; invece scrivi il titolo seguito da poche righe di testo e poi inserisci il codice epr la figura; se la figura fluisce nella pagina successiva prova a comporla con i codice=i di posizione !hb (con il punto esclamativo); se nonostante questo la figura flotta nella pagina successiva, vuol dire che è davvero troppo grande.
        Ma, ripeto, quello che fa LaTeX senza disturbarlo con il codice H (che dovrebbe essere vietato…) è tipgraficamente corretto.

        Dimenticati di quello che puoi fare con i Word Processor; se non sono usati con grandissima maestria, essi non sono altro che delle macchine da scrivere un po’ più versatili, ma non hanno nulla a che vedere con la tipografia.

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

    Go to top