- Questo topic ha 15 risposte, 6 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 11 mesi fa da
lorenzo.pantieri.
-
CreatoreTopic
-
12 Ottobre 2014 alle 11:43 #97544::
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.
-
CreatoreTopic
-
AutoreRisposte
-
-
12 Ottobre 2014 alle 12:07 #97545::
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
-
12 Ottobre 2014 alle 12:11 #97546::
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?
-
12 Ottobre 2014 alle 12:20 #97547
-
12 Ottobre 2014 alle 12:20 #97548::
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? 🙁
-
12 Ottobre 2014 alle 12:22 #97549::
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)…
-
12 Ottobre 2014 alle 12:26 #97550::
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
-
12 Ottobre 2014 alle 12:48 #97551::
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. 🙁
-
12 Ottobre 2014 alle 18:41 #97552
-
12 Ottobre 2014 alle 18:59 #97553
-
12 Ottobre 2014 alle 19:40 #97554::
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.
-
13 Ottobre 2014 alle 8:52 #97555
-
16 Ottobre 2014 alle 4:52 #97556::
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.
-
16 Ottobre 2014 alle 6:23 #97557::
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
-
16 Ottobre 2014 alle 7:10 #97558::
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.
-
16 Ottobre 2014 alle 7:26 #97559
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.