使用 subfloat 命令在行和列中使用不同的图形

使用 subfloat 命令在行和列中使用不同的图形

我编写了以下代码来排列三个图形,如下图所示。您有什么想法,如何更好地排列这些图形?由于某些原因,图片的左右两侧有大量可用空间。如果我用 替换0.45\textwidth,例如,0.5\textwidth那么我将有三个图形在列中对齐!!顺便说一句,\subfigure由于包之间的冲突,我无法使用命令。在此处输入图片描述 非常感谢

\documentclass[letterpaper,12pt,oneside,final]{book}

\usepackage{tikz,float,subfig}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{pgfplots}
\usepackage{mwe}
\newsavebox{\measurebox}

\begin{document}
%%%%%
%%%%%
\begin{figure}
\centering
\sbox{\measurebox}{%
  \begin{minipage}[b]{0.45\textwidth}
  \subfloat[]
    {
    \begin{tikzpicture}[baseline]
\begin{axis}[
  width=\textwidth,
]
\addplot[solid,smooth,mark=none,color={rgb,255:red,0; green,0; blue,255}]
coordinates {(9.8,0) (10.1,0.25)
         (10.4,0.5) (10.7,0.75) (11,1)};
\end{axis}
\end{tikzpicture}
    }
  \end{minipage}}
\usebox{\measurebox}
\begin{minipage}[b][\ht\measurebox][s]{0.45\columnwidth}
\centering
\subfloat[]
  {
  \begin{tikzpicture}[baseline]
   \begin{axis}[
   width=0.5\textwidth,
   ]
\addplot[solid,smooth,mark=none,color={rgb,255:red,0; green,0; blue,255}]
coordinates {(-180,0) (-90,0.25)
         (0,0.5) (90,0.75) (180,1)};
\end{axis}
\end{tikzpicture}
  \label{fig:Ex02_FT_fields}
  }

\vfill

\subfloat[]
  {\includegraphics[width=0.5\textwidth,height=2cm]{{example-image-a}}\label{fig:figC}}
\end{minipage}
\caption{my caption. (a) is .... (b) is .... (c) is ....}
\label{fig:Test}
\end{figure}
\end{document} 

答案1

我猜你想获得这样的东西:

在此处输入图片描述

上述结果是我通过以下 MWE(最小工作示例)获得的:

\documentclass[letterpaper,12pt,oneside,final]{book}
\usepackage[demo]{graphicx}
\usepackage{caption}
\usepackage{subfig}

\usepackage{amsmath}
\usepackage{pgfplots}
\pgfplotsset{compat = newest}

\usepackage{lipsum} % for dummy text

\begin{document}
\lipsum[1]
    \begin{figure}[htb]
  \begin{minipage}[b]{0.60\textwidth}
  \subfloat[]
    {
    \begin{tikzpicture}
\begin{axis}[
  width=\linewidth,
  line width=1pt,
  ymin=0, ymax=1,
  xmin=9.8, xmax=11,
  xlabel=Frquency (GHz),
  ylabel=$\left|S_{64}\right|$,
            ]
\addplot[mark=none] coordinates {(9.8,0) (10.1,0.25)
                                 (10.4,0.5) (10.7,0.75) (11,1)};
\end{axis}
\end{tikzpicture}
    }
  \end{minipage}\hfill%
\begin{minipage}[b]{0.35\columnwidth}
    \centering
\subfloat[]
  {
  \begin{tikzpicture}
   \begin{axis}[
   width=\linewidth,
   line width=1pt,
   ymin=0, ymax=1,
   xmin=-180, xmax=180,
   xlabel=$\theta\,\left(\text{degree}\right)$,
   ylabel=$\text{FT}\left( H_z\right)$,
   ]
\addplot[mark=none] coordinates {(-180,0) (-90,0.25)
                                 (0,0.5) (90,0.75) (180,1)};
\end{axis}
\end{tikzpicture}
    \label{fig:Ex02_FT_fields}
  }

\subfloat[]
  {
\includegraphics[width=\linewidth,height=2cm,keepaspectratio]{figures/temp_disp}
    \label{fig:figC}
  }
\end{minipage}
    \caption{my caption. (a) is .... (b) is .... (c) is ....}
    \label{fig:Test}
    \end{figure}
\lipsum[2]
\end{document}

如您所见,我删除了所有与您的问题无关的包和定义。我必须承认,我不明白您在图中包含图像的方式。似乎使用是savingbox您的问题的根源。删除它们并更正图像宽度的定义width=\textwidth可以\linewidth更好地完成工作。

我还没有弄清楚小页面的宽度比例。你可以根据需要进行更改。

相关内容