Я создал 3 графика с помощью следующего кода:
\documentclass[12pt]{exam}
\usepackage[a4paper, left=2.00cm, right=2.00cm, top=2.00cm, bottom=3.00cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{setspace}
\usepackage[x11names]{xcolor}
\usepackage{tcolorbox}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage[colorlinks=false]{hyperref}
\usepackage{tocloft}
\usepackage{ragged2e}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{babel}
\begin{document}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = red] (0.5, 2.05) edge (2.8, 2.05) node[anchor=north] {};
\path[-, dashed, color = red] (2.8, 2.05) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (0.5, 2.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 2.05);
\end{tikzpicture}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = red] (0.5, 0.55) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (2.8, 0.55) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 0.55);
\end{tikzpicture}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = Green4] (1.65, 0) edge (1.65, 1.05) node[anchor=north] {$\frac{\alpha+\beta}{2}$};
\path[-, dashed, color = red] (0.5, 1.05) edge (2.8, 1.05) node[anchor=north] {};
\path[-, dashed, color = red] (2.8, 1.05) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (1.65, 1.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 1.05);
\end{tikzpicture}
\end{document}
Однако мне бы хотелось выровнять три графика по вертикали и добавить под ними текст, как в этом примере:
Как это сделать? Спасибо заранее
решение1
Вы можете выровнять ось x ваших графиков, указав базовую линию для изображений TikZ. Таким образом, вам не придется беспокоиться о том, что у них разные размеры, а их абсцисса будет автоматически выровнена (чего бы не произошло, если бы вы просто выровняли их по нижнему краю, как это делают обычные пакеты для подрисунков):
\documentclass[12pt]{exam}
\usepackage[a4paper, left=2.00cm, right=2.00cm, top=2.00cm, bottom=3.00cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}
\usepackage{setspace}
\usepackage[x11names]{xcolor}
\usepackage{tcolorbox}
\usepackage{amssymb}
\usepackage{tocloft}
\usepackage{ragged2e}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage{tikz}
\usetikzlibrary{babel}
\usepackage{subcaption}
\usepackage[colorlinks=false]{hyperref}
\tikzset{mynode/.style={anchor=center,yshift=-2ex}}
\begin{document}
\begin{figure}[htbp]
\hfill\begin{tikzpicture}[baseline={(0,0)}]
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[mynode] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[mynode] {$\beta$};
\path[-, dashed, color = red] (0.5, 2.05) edge (2.8, 2.05);
\path[-, dashed, color = red] (2.8, 2.05) edge (2.8, 0.55);
\shade[ball color = red] (0.5, 2.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 2.05);
\end{tikzpicture}%
\hfill\hfill
\begin{tikzpicture}[baseline={(0,0)}]
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[mynode] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[mynode] {$\beta$};
\path[-, dashed, color = red] (0.5, 0.55) edge (2.8, 0.55);
\shade[ball color = red] (2.8, 0.55) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 0.55);
\end{tikzpicture}%
\hfill\hfill
\begin{tikzpicture}[baseline={(0,0)}]
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[mynode] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[mynode] {$\beta$};
\path[-, dashed, color = Green4] (1.65, 0) edge (1.65, 1.05) node[mynode] {$\frac{\alpha+\beta}{2}$};
\path[-, dashed, color = red] (0.5, 1.05) edge (2.8, 1.05);
\path[-, dashed, color = red] (2.8, 1.05) edge (2.8, 0.55);
\shade[ball color = red] (1.65, 1.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 1.05);
\end{tikzpicture}\hfill\mbox{}%
\subcaptionbox{A cat}{\hspace{.33\linewidth}}%
\subcaptionbox{A cat}{\hspace{.33\linewidth}}%
\subcaptionbox{A cat}{\hspace{.33\linewidth}}%
\end{figure}
\end{document}
решение2
Как это?
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\usepackage{tikz}
\usepackage[x11names]{xcolor}
\usepackage{amssymb}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{subfigure}[b]{0.3\textwidth}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = red] (0.5, 2.05) edge (2.8, 2.05) node[anchor=north] {};
\path[-, dashed, color = red] (2.8, 2.05) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (0.5, 2.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 2.05);
\end{tikzpicture}
\caption{Caption for the first graphic.}
\label{fig:sub1}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.3\textwidth}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = red] (0.5, 0.55) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (2.8, 0.55) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 0.55);
\end{tikzpicture}
\caption{Caption for the second graphic.}
\label{fig:sub2}
\end{subfigure}
\hfill
\begin{subfigure}[b]{0.3\textwidth}
\begin{tikzpicture}
\draw[->] (-0.3, 0) -- (3.3, 0) node[right] {$\mathbb{R}$};
\draw[->] (0, -0.3) -- (0, 2.5) node[above] {$\mathbb{R}$};
\draw[thick, domain=0.5:2.8, smooth, variable=\x, blue] plot ({\x}, {sin(2*\x r) + 1.2});
\path[-, dashed, color = Green4] (0.5, 0) edge (0.5, 2) node[anchor=north] {$\alpha$};
\path[-, dashed, color = Green4] (2.8, 0) edge (2.8, 0.5) node[anchor=north] {$\beta$};
\path[-, dashed, color = Green4] (1.65, 0) edge (1.65, 1.05) node[anchor=north] {$\frac{\alpha+\beta}{2}$};
\path[-, dashed, color = red] (0.5, 1.05) edge (2.8, 1.05) node[anchor=north] {};
\path[-, dashed, color = red] (2.8, 1.05) edge (2.8, 0.55) node[anchor=north] {};
\shade[ball color = red] (1.65, 1.05) circle (2pt);
\fill[OrangeRed1, opacity = 0.15] (0.5, 0) rectangle (2.8, 1.05);
\end{tikzpicture}
\caption{Caption for the third graphic.}
\label{fig:sub3}
\end{subfigure}
\caption{Main caption for the three graphics.}
\label{fig:main}
\end{figure}
Some text below the graphics.
\end{document}
Вы можете настроить ширину каждой подфигуры, изменив значение 0.3\textwidth
. \hfill
Команды распределяют подфигуры по горизонтали.
решение3
Перерисуйте ординаты так, чтобы все изображения имели одинаковую высоту:
\documentclass{article}
\usepackage[font=small,
justification=raggedright]{subcaption}
\usepackage{tikz}
\usepackage[x11names]{xcolor}
\usepackage{nccmath,amssymb}
\begin{document}
\begin{figure}[htbp]
\centering
\tikzset{
tl/.style = {anchor=center, yshift=-2.4ex},
ln/.style = {draw, color=#1, densely dashed},
Ball/.style = {ball color = red},
}
\newcommand\axis{
\draw[->] (-0.2,0) -- (3.2, 0) node[right] {$\mathbb{R}$};
\draw[->] (0,-0.8) + (0,0.6) -- (0, 2.5) node[above] {$\mathbb{R}$};
}
\pgfmathsetmacro{\ya}{sin(2*0.5 r) + 1.2} % 2*0.5 +1.2
\pgfmathsetmacro{\yb}{sin(2*2.8 r) + 1.2} % 2*2.8 + 1-2
\pgfmathsetmacro{\yc}{sin(2*(0.5+2.8)/2 r) + 1.2} % 2*(0.5+2.8)/2 +1.2
%%%% images
\subfloat[Caption for the first graphic. \label{subfig:a}]%
{%
\begin{tikzpicture}
\axis
\draw[thick, blue, domain=0.5:2.8, samples=100] plot (\x, {sin(2*\x r) + 1.2});
\path[ln=Green4](0.5, 0) edge ++ (0,\ya) node[tl] {$\alpha$}
(2.8, 0) edge ++ (0,\yb) node[tl] {$\beta$};
\path[ln=red] (0.5, \ya) -| (2.8, \yb);
\shade[Ball] (0.5, \ya) circle[radius=2pt];
\fill[OrangeRed1, opacity = 0.15] (0.5,0) rectangle (2.8, \ya);
\end{tikzpicture}%
}\hfill
\subfloat[Caption for the second graphic. \label{subfig:b}]%
{%
\begin{tikzpicture}
\axis
\draw[thick, blue, domain=0.5:2.8, samples=100] plot (\x, {sin(2*\x r) + 1.2});
\path[ln=Green4](0.5, 0) edge ++ (0,\ya) node[tl] {$\alpha$}
(2.8, 0) edge ++ (0,\yb) node[tl] {$\beta$};
\path[ln=red] (0.5, \yb) -- (2.8, \yb);
\shade[Ball] (2.8, \yb) circle[radius=2pt];
\fill[OrangeRed1, opacity = 0.15] (0.5,0) rectangle (2.8, \yb);
\end{tikzpicture}%
}\hfill
\subfloat[Caption for the second graphic. \label{subfig:c}]%
{%
\begin{tikzpicture}
\axis
\draw[thick, blue, domain=0.5:2.8, samples=100] plot (\x, {sin(2*\x r) + 1.2});
\path[ln=Green4](0.5, 0) edge ++ (0,\ya) node[tl] {$\alpha$}
(2.8, 0) edge ++ (0,\yb) node[tl] {$\beta$}
(1.65,0) edge ++ (0,\yc) node[tl] {$\mfrac{\alpha+\beta}{2}$};
\path[ln=red] (0.5, \yc) -| (2.8, \yb);
\shade[Ball] (1.65,\yc) circle[radius=2pt];
\fill[OrangeRed1, opacity = 0.15] (0.5,0) rectangle (2.8, \yc);
\end{tikzpicture}%
}
\caption{Main caption for the three graphics.}
\label{fig:main}
\end{figure}
\end{document}
Комментарии:
По сравнению с вашим и другими решениями, указанное выше решение MWE имеет следующие основные отличия:
- определенная команда для рисования систем координат (чтобы все изображения имели одинаковую высоту),
- общее определение стилей элементов изображения
- определенные макросы для расчета координат y, используемых в изображениях,
- используемые
\subfloat
среды эмулируютсяsubcaption
пакетом версии 3.1 или более поздней.