Affiancare una figura e una tabella

  • Creatore
    Topic
  • #97544
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti. Devo far vedere come disegnare per punti una funzione: quindi ho una bella tabella e il grafico relativo a questa tabella. A mio avviso, la cosa più naturale è che i due oggetti vengano affiancati.

      Incredibile ma vero, non mi sono mai posto il problema di come farlo.

      Il pacchetto subfig permette di affiancare tabelle e figure, dando a ciascuna una didascalia. Sono sicuro che posso farlo anche con oggetti eterogenei, ma il punto è: l’insieme “tabella + figura” che oggetto è? Una figura? Voi usereste subfig per affiancare una figura e una tabella, identificando l’insieme come una figura?

      Come affrontereste la cosa?

      `\documentclass{article}
      \usepackage{tikz,pgfplots,booktabs}
      \begin{document}

      \begin{figure}
      \centering
      \begin{tikzpicture}[font=\small]
      \begin{axis} [width=\textwidth,
      axis lines=middle,
      xmin=-5,xmax=5,ymin=0,ymax=16,
      enlargelimits,
      xtick={-4,…,4},
      ytick={0,…,16},
      xlabel=$x$,
      ylabel=$y$]
      \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
      \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
      \end{axis}
      \end{tikzpicture}
      \caption{La funzione $y=2^x$.}
      \end{figure}

      \begin{table}
      \caption{La funzione $y=2^x$.}
      \centering
      \begin{tabular}{rl}
      \toprule
      $x$ & $y=2^x$ \\
      \midrule
      $-4$ & $2^{-4} = -4$ \\
      $-3$ & $2^{-3} = -3$ \\
      $-2$ & $2^{-2} = -2$ \\
      $-1$ & $2^{-1}= -1$ \\
      $0$ & $2^0 = 1$ \\
      $1$ & $2^1 = 2$ \\
      $2$ & $2^2 = 4$ \\
      $3$ & $2^3 = 8$ \\
      $4$ & $2^4 = 16$ \\
      \bottomrule
      \end{tabular}
      \end{table}
      \end{document}`
      Grazie anticipate,
      L.

    Visualizzazione 14 filoni di risposte
    • Autore
      Risposte
      • #97545
        Up
        0
        Down
        ::

        lorenzo.pantieri” post=96945Ciao a tutti. Devo far vedere come disegnare per punti una funzione: quindi ho una bella tabella e il grafico relativo a questa tabella. A mio avviso, la cosa più naturale è che i due oggetti vengano affiancati.

        Incredibile ma vero, non mi sono mai posto il problema di come farlo.

        Il pacchetto subfig permette di affiancare tabelle e figure, dando a ciascuna una didascalia. Sono sicuro che posso farlo anche con oggetti eterogenei, ma il punto è: l’insieme “tabella + figura” che oggetto è? Una figura? Voi usereste subfig per affiancare una figura e una tabella, identificando l’insieme come una figura?

        Come affrontereste la cosa?

        `\documentclass{article}
        \usepackage{tikz,pgfplots,booktabs}
        \begin{document}

        \begin{figure}
        \centering
        \begin{tikzpicture}[font=\small]
        \begin{axis} [width=\textwidth,
        axis lines=middle,
        xmin=-5,xmax=5,ymin=0,ymax=16,
        enlargelimits,
        xtick={-4,…,4},
        ytick={0,…,16},
        xlabel=$x$,
        ylabel=$y$]
        \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
        \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
        \end{axis}
        \end{tikzpicture}
        \caption{La funzione $y=2^x$.}
        \end{figure}

        \begin{table}
        \caption{La funzione $y=2^x$.}
        \centering
        \begin{tabular}{rl}
        \toprule
        $x$ & $y=2^x$ \\
        \midrule
        $-4$ & $2^{-4} = -4$ \\
        $-3$ & $2^{-3} = -3$ \\
        $-2$ & $2^{-2} = -2$ \\
        $-1$ & $2^{-1}= -1$ \\
        $0$ & $2^0 = 1$ \\
        $1$ & $2^1 = 2$ \\
        $2$ & $2^2 = 4$ \\
        $3$ & $2^3 = 8$ \\
        $4$ & $2^4 = 16$ \\
        \bottomrule
        \end{tabular}
        \end{table}
        \end{document}`
        Grazie anticipate,
        L.

        Hai altre cose del genere nel documento o questa è l’unica? Hai altre tabelle o questa è l’unica? Hai altre figure o questa è l’unica?

        Dipende da quale dei due elementi è più importante. Se è il grafico, come credo, chiamerei l’oggetto Figura.

        Ma non ci perderei più di un minuto per pensarci 🙂

        Ciao
        Tommaso

      • #97546
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          illinguista1972″ post=96951
          Hai altre cose del genere nel documento o questa è l’unica? Hai altre tabelle o questa è l’unica? Hai altre figure o questa è l’unica?

          È l’unico caso.

          illinguista1972″ post=96951
          Dipende da quale dei due elementi è più importante. Se è il grafico, come credo, chiamerei l’oggetto Figura.

          Ok. I due oggetti li affiancheresti con subfig?

        • #97547
          Up
          0
          Down
          ::

          lorenzo.pantieri” post=96952Ok. I due oggetti li affiancheresti con subfig?

          O con due minipage: dipende come ti trovi meglio e il risultato è praticamente identico partendo dal presuposto che tu non voglia due didascalie distinte più quella generale. Altrimenti subfig.

          Ciao
          Claudio

        • #97548
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::


            Ecco ho provato. Sia con subfig che con una semplice figure.
            `\begin{figure}
            \centering
            \subfloat[][]{
            \begin{tikzpicture}[font=\small]
            \begin{axis} [width=0.7\textwidth,
            axis lines=middle,
            xmin=-5,xmax=5,ymin=0,ymax=16,
            enlargelimits,
            xtick={-4,…,4},
            ytick={0,…,16},
            xlabel=$x$,
            ylabel=$y$]
            \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
            \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
            \end{axis}
            \end{tikzpicture}
            }
            \quad
            \subfloat[][]{
            \begin{tabular}{rl}
            \toprule
            $x$ & $y=2^x$ \\
            \midrule
            $-4$ & $2^{-4} = 1/16$ \\
            $-3$ & $2^{-3} = 1/8$ \\
            $-2$ & $2^{-2} = 1/4$ \\
            $-1$ & $2^{-1}= 1/2$ \\
            $0$ & $2^0 = 1$ \\
            $1$ & $2^1 = 2$ \\
            $2$ & $2^2 = 4$ \\
            $3$ & $2^3 = 8$ \\
            $4$ & $2^4 = 16$ \\
            \bottomrule
            \end{tabular}
            }
            \caption{La funzione $y=2^x$.}
            \end{figure}`

            `\begin{figure}
            \centering
            \begin{tikzpicture}[font=\small]
            \begin{axis} [width=0.8\textwidth,
            axis lines=middle,
            xmin=-5,xmax=5,ymin=0,ymax=16,
            enlargelimits,
            xtick={-4,…,4},
            ytick={0,…,16},
            xlabel=$x$,
            ylabel=$y$]
            \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
            \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
            \end{axis}
            \end{tikzpicture}
            %
            \quad
            %
            \begin{tabular}{rl}
            \toprule
            $x$ & $y=2^x$ \\
            \midrule
            $-4$ & $2^{-4} = 1/16$ \\
            $-3$ & $2^{-3} = 1/8$ \\
            $-2$ & $2^{-2} = 1/4$ \\
            $-1$ & $2^{-1}= 1/2$ \\
            $0$ & $2^0 = 1$ \\
            $1$ & $2^1 = 2$ \\
            $2$ & $2^2 = 4$ \\
            $3$ & $2^3 = 8$ \\
            $4$ & $2^4 = 16$ \\
            \bottomrule
            \end{tabular}
            \caption{La funzione $y=2^x$.}
            \end{figure}`
            Non capisco: perché l’allineamento viene così sballato? 🙁

          • #97549
            lorenzo.pantieri
            Partecipante
              Up
              0
              Down
              ::

              cfiandra” post=96956

              Ok. I due oggetti li affiancheresti con subfig?

              O con due minipage: dipende come ti trovi meglio e il risultato è praticamente identico partendo dal presuposto che tu non voglia due didascalie distinte più quella generale. Altrimenti subfig.

              Forse meglio subfig. Solo, non riesco ad allineare orizzontalmente i due oggetti (verso il basso, in modo che le due sottodida si trovino alla stessa altezza)…

            • #97550
              Up
              0
              Down
              ::

              lorenzo.pantieri” post=96958

              [quote=”lorenzo.pantieri” post=96952]Ok. I due oggetti li affiancheresti con subfig?

              O con due minipage: dipende come ti trovi meglio e il risultato è praticamente identico partendo dal presuposto che tu non voglia due didascalie distinte più quella generale. Altrimenti subfig.

              Forse meglio subfig. Solo, non riesco ad allineare orizzontalmente i due oggetti (verso il basso, in modo che le due sottodida si trovino alla stessa altezza)…[/quote]
              Dipende dal contenuto: suppongo tabella e figura abbiano altezze diverse che causano il problema. Per avere le didascalie allineate credo sia sufficiente allineare verso il basso.

              Citando la documentazione:

              6.1 “My sub-floats are not aligned along their bottoms. Why?”
              Remember! The subfig package aligns sub-floats along their baselines with the sub- caption (if any) sticking out above or below. The above problem is usually due to using a minipage, tabular or array environment that, by default, places the baseline at the center of the box that it generates. If the two sub-floats are different sizes, or if one sub-float is generated in some other way with its baseline not at the expected place (perhaps an \includegraphics), then the sub-float will be misaligned. One solution is to use the environment options ‘[t]’ or ‘’ to move the baseline to the top or bottom rather than the center.

              Ciao
              Claudio

            • #97551
              lorenzo.pantieri
              Partecipante
                Up
                0
                Down
                ::


                Ci sono quasi:
                `\documentclass{article}
                \usepackage{tikz,pgfplots,booktabs,subfig}
                \begin{document}

                \captionsetup[subfigure]{position=top}

                \begin{figure}[H]
                \centering
                \subfloat[][]{
                \begin{tikzpicture}[font=\small]
                \begin{axis} [width=0.7\textwidth,
                axis lines=middle,
                xmin=-5,xmax=5,ymin=0,ymax=16,
                enlargelimits,
                xtick={-4,…,4},
                ytick={0,…,16},
                xlabel=$x$,
                ylabel=$y$]
                \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
                \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
                \end{axis}
                \end{tikzpicture}
                }
                \quad
                \subfloat[][]{
                \begin{tabular}{rl}
                \toprule
                $x$ & $y=2^x$ \\
                \midrule
                $-4$ & $2^{-4} = 1/16$ \\
                $-3$ & $2^{-3} = 1/8$ \\
                $-2$ & $2^{-2} = 1/4$ \\
                $-1$ & $2^{-1}= 1/2$ \\
                $0$ & $2^0 = 1$ \\
                $1$ & $2^1 = 2$ \\
                $2$ & $2^2 = 4$ \\
                $3$ & $2^3 = 8$ \\
                $4$ & $2^4 = 16$ \\
                \bottomrule
                \end{tabular}
                }
                \caption{La funzione $y=2^x$.}
                \end{figure}

                \end{document}`
                Io però vorrei le dida in basso, allineate orizzontalmente. Così me le allinea, ma in alto.

                Se faccio:
                `\captionsetup[subfigure]{position=bottom}`
                non funziona. 🙁

              • #97552
                Up
                0
                Down
                ::


                Non me ne intendo e potrei dire una castroneria. Ma siccome la tabella è piccola e il grafico è grande, sarebbe sbagliato mettere i valori di x e y nel grafico accanto a ogni punto? In questo modo avresti solo la figura.

                Ciao
                Tommaso

              • #97553
                claudio
                Partecipante
                  Up
                  0
                  Down
                  ::


                  provato con subcaption?
                  ciao

                • #97554
                  OldClaudio
                  Partecipante
                    Up
                    0
                    Down
                    ::


                    A me funziona, ma ci vuole anche un per tabular: `
                    \documentclass{article}
                    \usepackage{tikz,pgfplots,booktabs,subfig}
                    \begin{document}

                    \captionsetup[subfigure]{position=bottom}

                    \begin{figure}[H]
                    \centering
                    \subfloat[][]{
                    \begin{tikzpicture}[font=\small]
                    \begin{axis} [width=0.7\textwidth,
                    axis lines=middle,
                    xmin=-5,xmax=5,ymin=0,ymax=16,
                    enlargelimits,
                    xtick={-4,…,4},
                    ytick={0,…,16},
                    xlabel=$x$,
                    ylabel=$y$]
                    \addplot [domain=-4:4, samples=100,smooth,very thick,blue] {2^x};
                    \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
                    \end{axis}
                    \end{tikzpicture}
                    }
                    \quad
                    \subfloat[][]{
                    \begin{tabular}{rl}
                    \toprule
                    $x$ & $y=2^x$ \\
                    \midrule
                    $-4$ & $2^{-4} = 1/16$ \\
                    $-3$ & $2^{-3} = 1/8$ \\
                    $-2$ & $2^{-2} = 1/4$ \\
                    $-1$ & $2^{-1}= 1/2$ \\
                    $0$ & $2^0 = 1$ \\
                    $1$ & $2^1 = 2$ \\
                    $2$ & $2^2 = 4$ \\
                    $3$ & $2^3 = 8$ \\
                    $4$ & $2^4 = 16$ \\
                    \bottomrule
                    ~ & \rule{0pt}{3.25ex}
                    \end{tabular}
                    }
                    \caption{La funzione $y=2^x$.}
                    \end{figure}

                    \end{document}
                    `
                    però la tabella e il diagramma hanno grandezze e forme diverse; ci vuole uno spazio sotto la tabella per tirarla su un poco; io ci ho messo un pilastrino alto 3.25ex e pressappoco va bene.

                  • #97555
                    lorenzo.pantieri
                    Partecipante
                      Up
                      0
                      Down
                      ::


                      Perfetto!!! Grazie mille, Claudio, risolutivo come sempre! 🙂 🙂 🙂

                    • #97556
                      lorenzo.pantieri
                      Partecipante
                        Up
                        0
                        Down
                        ::

                        lorenzo.pantieri” post=97005Perfetto!

                        Ahem, sono stato precipitoso. Qualcosa che non va è rimasto.

                        `\documentclass{article}
                        \usepackage{tikz,pgfplots,booktabs,subfig}
                        \begin{document}

                        \begin{figure}
                        \centering
                        \subfloat[][Grafico.]{
                        \begin{tikzpicture}[font=\small]
                        \begin{axis} [width=0.7\textwidth,
                        axis lines=middle,
                        xmin=-5,xmax=5,ymin=0,ymax=16,
                        enlargelimits,
                        xtick={-4,…,4},
                        ytick={0,…,16},
                        xlabel=$x$,
                        ylabel=$y$]
                        \addplot [domain=-4:4, samples=500,smooth,very thick,blue] {2^x};
                        \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
                        \end{axis}
                        \end{tikzpicture}
                        }
                        \quad
                        \subfloat[][Alcuni valori.]{
                        \begin{tabular}{rl}
                        \toprule
                        $x$ & $y=2^x$ \\
                        \midrule
                        $-4$ & $2^{-4} = 1/16$ \\
                        $-3$ & $2^{-3} = 1/8$ \\
                        $-2$ & $2^{-2} = 1/4$ \\
                        $-1$ & $2^{-1}= 1/2$ \\
                        $0$ & $2^0 = 1$ \\
                        $1$ & $2^1 = 2$ \\
                        $2$ & $2^2 = 4$ \\
                        $3$ & $2^3 = 8$ \\
                        $4$ & $2^4 = 16$ \\
                        \bottomrule
                        ~ & \rule{0pt}{3.25ex}
                        \end{tabular}
                        }
                        \caption{La funzione $y=2^x$.}
                        \label{fig:esponenzialecrescente}
                        \end{figure}

                        \end{document}`
                        Come vedete, le sottodidascalie non sono perfettamente allineate: “Alcuni valori” è più in basso di “Grafico”. La differenza è evidente, si nota anche a occhio nudo, senza ingrandire il PDF.

                        Soluzioni?

                        Grazie 1000,
                        L.

                      • #97557
                        Liverpool
                        Partecipante
                          Up
                          0
                          Down
                          ::

                          lorenzo.pantieri” post=97070Come vedete, le sottodidascalie non sono perfettamente allineate: “Alcuni valori” è più in basso di “Grafico”. La differenza è evidente, si nota anche a occhio nudo, senza ingrandire il PDF. Soluzioni?

                          Usare TikZ per allineare la figura e la tabella, mettendo quest’ultima in un nodo di TikZ.
                          `\documentclass{article}
                          \usepackage{tikz,pgfplots,booktabs,subfig}
                          \begin{document}

                          \begin{figure}
                          \centering
                          \subfloat[][Grafico.]{
                          \begin{tikzpicture} [baseline=-6mm, font=\small]
                          \begin{axis} [width=0.7\textwidth,
                          anchor=origin,
                          axis lines=middle,
                          xmin=-5,xmax=5,ymin=0,ymax=16,
                          enlargelimits,
                          xtick={-4,…,4},
                          ytick={0,…,16},
                          xlabel=$x$,
                          ylabel=$y$]
                          \addplot [domain=-4:4, samples=500,smooth,very thick,blue] {2^x};
                          \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
                          \end{axis}
                          \end{tikzpicture}
                          }
                          \quad
                          \subfloat[][Alcuni valori.]{
                          \begin{tikzpicture} [baseline=-6mm]
                          \node [above, inner sep=0pt, outer sep=-0.04em] {
                          \begin{tabular}{rl}
                          \toprule
                          $x$ & $y=2^x$ \\
                          \midrule
                          $-4$ & $2^{-4} = 1/16$ \\
                          $-3$ & $2^{-3} = 1/8$ \\
                          $-2$ & $2^{-2} = 1/4$ \\
                          $-1$ & $2^{-1}= 1/2$ \\
                          $0$ & $2^{0} = 1$ \\
                          $1$ & $2^1 = 2$ \\
                          $2$ & $2^2 = 4$ \\
                          $3$ & $2^3 = 8$ \\
                          $4$ & $2^4 = 16$ \\
                          \bottomrule
                          \end{tabular}
                          };
                          \end{tikzpicture}
                          }
                          \caption{La funzione $y=2^x$.}
                          \label{fig:esponenzialecrescente}
                          \end{figure}

                          \end{document}`

                          Spiegazione:
                          1) [tt]baseline=-6mm[/tt] dice che in entrambi i disegni la linea che si trova 6 mm sotto l’origine del disegno corrisponde alla linea di base del testo. Il valore di 6 mm è scelto arbitrariamente (sicuramente si può calcolare automaticamente)
                          2) [tt]anchor=origin[/tt] dice che l’origine del grafico corrisponde anche all’origine del disegno. Mi serve per allineare l’asse x con la linea inferiore della tabella
                          3) [tt]above, inner sep=0pt, outer sep=-0.04em[/tt] dicono che l’origine del disegno si trova sulla linea inferiore della tabella. In particolare il valore 0.04em tiene conto del fatto che la linea della tabella è spessa 0.08em per default e in questo modo l’origine viene a trovarsi a metà spessore della linea.

                          Riepilogando, abbiamo detto che l’asse x deve corrispondere alla linea inferiore della tabella e che la linea di base del testo deve trovarsi 6 mm più in basso.

                          Sicuramente c’è un modo di farlo senza usare TikZ.
                          Ciao

                        • #97558
                          OldClaudio
                          Partecipante
                            Up
                            0
                            Down
                            ::


                            Va da se che la soluzione di Liverpool è perfetta;
                            Tuttavia, non voglio insistere, andando nei dettagli mi sono reso conto che la tabella col pilastrino non tiene conto dell’altro pilastrino che c’è nella prima calla a sinstra di ogni tabella.
                            Il tuo problema mi ha permesso di scendere nei minimi dettagli, e quindi ho ricordato una cosa che mi ero scordato, cioè che il pilastrino dela prima cella ha una parte discendente; in effetti è un pilastrino che ha la stessa altezza e profondità di una parentesi, e larghezza nulla. è la profondità quella che spinge la sotto didascalia di destra un poco più in basso. Bisogna quindi non far intervenire quel pilastrino. la soluzione, per altro è semplice, ma come per usare TiKZ bisogna conoscere cose in dettaglio, così anche con tabular bisogna conoscere altre cose in dettaglio, in particolare bisogna conoscere il comando \noalign; È quello che dietro le quinte permette di inserire materiale verticale in ogni tabella senza tenere conto degli allineamenti, come dice il nome; è quello che sta alla base di \toprule, \midrule, \bottomrule. Il codice vecchia maniera diventerebbe quindi sarebbe:`\documentclass{article}
                            \usepackage{tikz,pgfplots,booktabs,subfig}
                            \begin{document}

                            \begin{figure}
                            \centering
                            \subfloat[][Grafico.]{
                            \begin{tikzpicture}[font=\small]
                            \begin{axis} [width=0.7\textwidth,
                            axis lines=middle,
                            xmin=-5,xmax=5,ymin=0,ymax=16,
                            enlargelimits,
                            xtick={-4,…,4},
                            ytick={0,…,16},
                            xlabel=$x$,
                            ylabel=$y$]
                            \addplot [domain=-4:4, samples=500,smooth,very thick,blue] {2^x};
                            \addplot [only marks, samples at={-4,-3,-2,-1,0,1,2,3,4}, blue] {2^x};
                            \end{axis}
                            \end{tikzpicture}
                            }
                            \quad
                            \subfloat[][Alcuni valori.]{
                            \begin{tabular}{rl}
                            \toprule
                            $x$ & $y=2^x$ \\
                            \midrule
                            $-4$ & $2^{-4} = 1/16$ \\
                            $-3$ & $2^{-3} = 1/8$ \\
                            $-2$ & $2^{-2} = 1/4$ \\
                            $-1$ & $2^{-1}= 1/2$ \\
                            $0$ & $2^0 = 1$ \\
                            $1$ & $2^1 = 2$ \\
                            $2$ & $2^2 = 4$ \\
                            $3$ & $2^3 = 8$ \\
                            $4$ & $2^4 = 16$ \\
                            \bottomrule
                            \noalign{\vspace{3.35ex}}
                            \end{tabular}}
                            \caption{La funzione $y=2^x$.}
                            \label{fig:esponenzialecrescente}
                            \end{figure}

                            \end{document}`Tutto sommato il codice è più semplice di quello di TiKZ, ma sa più di “sporchi trucchi”, mentre al soluzione di Luigi è lineare, anche se richiede conoscenze che non tutti hanno.

                          • #97559
                            lorenzo.pantieri
                            Partecipante
                              Up
                              0
                              Down
                              ::


                              Perfetto!!! Grazie mille, Claudio e Luigi! Ho optato per la soluzione di Claudio perché risulta a me più comprensibile!

                              Grazie davvero!! 🙂

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

                          Go to top