как совместить два сюжета tikzpicture в латексе - PullRequest
0 голосов
/ 24 февраля 2020

Я пытаюсь использовать метод подфигуры, показанный на https://www.latex-tutorial.com/tutorials/figures/, чтобы создавать графики рядом друг с другом, но я не могу отрегулировать размер и получить их до go рядом. .Что я делаю неправильно? Ниже приведен код, который я использую

\begin{figure}
        \centering
        \begin{subfigure}[b!]{0.3\textwidth}
            \begin{tikzpicture}
                \begin{axis}[
                    axis y line = middle,
                    axis x line = middle,
                    xlabel = $x$,
                    ylabel = {$f(x) = x^3$},
                    grid=major,
                ]
                \addplot [
                    domain=-3:3, 
                    samples=100, 
                    color=red,
                ]
                {x^3};
                \addlegendentry{$x^3$}
                %
                \addplot [
                    domain=-3:3, 
                    samples=100, 
                    color=blue,
                    ]
                    {x^3 + 3};
                \addlegendentry{$x^3 + 3$}
                 %
                \addplot [
                    domain=-3:3, 
                    samples=100, 
                    color=green,
                    ]
                    {x^3 - 3};
                \addlegendentry{$x^3 - 3$}
                \end{axis}
            \end{tikzpicture}
        \end{subfigure}
        %\hfill
        \begin{subfigure}[b]{0.3\textwidth}
            \begin{tikzpicture}
                \begin{axis}[
                    axis y line = middle,
                    axis x line = middle,
                    xlabel = $x$,
                    ylabel = {$f(x) = x^3$},
                    grid=major,
                ]
                \addplot [
                    domain=-3:3, 
                    samples=100, 
                    color=red,
                ]
                {x^3};
                \addlegendentry{$x^3$}
                \end{axis}
            \end{tikzpicture}
        \end{subfigure}
        \caption{lajsdfls}
    \end{figure}

1 Ответ

1 голос
/ 24 февраля 2020

Есть две проблемы с вашим кодом.

Первое горизонтальное выравнивание фигур было неправильным, но это легко исправить, используя

\begin{subfigure}[b]{0.3\textwidth}

вместо

\begin{subfigure}[b!]{0.3\textwidth}

относительно ширины, то, что делается при создании среды подфигуры, - это создание министраницы указанной ширины. Но вы должны уважать эту ширину с вашим контентом , масштабирование не выполняется.

Например, если в подфигуре вы включаете изображение и задаете ему ширину \ linewidth, ширина будет соблюдаться. Но если вы дадите этому изображению ширину 15 см, возможно, оно будет больше, чем у вас. Но LaTeX будет уважать ваши директивы (и указывать на переполнение hbox).

Это проблема, которая у вас есть. Ваши сюжеты слишком велики и пересекаются.

Это можно исправить двумя способами.

  • Вы можете задать параметр width = \ linewidth для среды оси, но обычно для этого требуется переделать ваш график

  • Вы можете изменить масштаб коробки, созданной tikz. Наиболее гибкий способ сделать это с помощью пакета Adjustbox

\documentclass{article}

\usepackage{subcaption}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage{adjustbox}

\begin{document}

\begin{figure}
  \centering
  \begin{subfigure}[b]{0.45\textwidth}
%%%    \begin{adjustbox}{width=\linewidth} % rescale box
    \begin{tikzpicture}
      \begin{axis}[
%%%        width=\linewidth,            % or modify the plot width
        axis y line = middle,
        ...
        ...
      \end{axis}
    \end{tikzpicture}
%%%  \end{adjustbox}       %
\end{subfigure}%
   \hfill
  \begin{subfigure}[b]{0.45\textwidth}
etc.

Добавление параметра ширины в окружение оси

enter image description here

Масштабирование с помощью Adjustbox

enter image description here

Кстати, если вы не собираетесь добавлять подзаголовки на свои графики, среда подфигуры бесполезна, и Вы можете просто поместить свои (должным образом масштабированные) картинки tikzpictures рядом друг с другом через \ hfill.

...