我需要在每个图的旁边添加一个子标题\groupplots
。经过一番搜索,我发现这Tex.SE 上的主题展示了如何向组图添加子标题。我稍微修改了这段代码,以便在图的侧面显示标题。
问题是,节点需要有一个text width
。如果没有此参数,TikZ 会向您大喊大叫。但是,在设置 时text width
,您必须调整值以匹配您要进行的设计。
在我的例子中,子标题应该显示一些数字。由于这些数字的位数不同,结果看起来有点奇怪。原因是,标题总是位于其框内的中央,在本例中,框是具有给定文本宽度的节点。
所以我的第一个问题是我能做什么,让整个标题左对齐。我不想只让标题内的文本左对齐(这可以通过 实现)justification = raggedright
,而是让整个块左对齐。
如果这个问题得到解决,那么第二个问题正在等待;)
如果你看一下我的例子,你会看到,子标题带有一些填充。这些填充不允许我垂直居中节点...所以第二个问题是如何删除子标题填充仅有的关于此图的子标题。
平均能量损失
\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{figure}[htb!]
\centering
\begin{tikzpicture}
\begin{groupplot}[group style = {
group size = 1 by 2,
xlabels at = edge bottom,
xticklabels at = edge bottom,
vertical sep = 4pt
},
clip = false]
\nextgroupplot
\node [text width = 5em, anchor = north west, draw = red] at (rel axis cs: 1.01, 0.5)
{\subcaption{Eggs \label{fig:a}}};
\addplot plot coordinates {(0,0) (1,1) (2,2) (3,3)};
\nextgroupplot
\node [text width = 5em, anchor = north west, draw = red] at (rel axis cs: 1.01, 0.5)
{\subcaption{Bacon \label{fig:b}}};
\addplot plot coordinates {(0,0) (1,1) (2,4) (3,9)};
\end{groupplot}
\end{tikzpicture}
\caption{Caption of figure}
\end{figure}
Figure \ref{fig:a} and \ref{fig:b}
\end{document}
答案1
对于您的第一个问题,我有一个相当简单的建议,但对于您的第二个问题,我没有任何建议,因为我不完全了解问题是什么。(您不能只将锚点设置为170
吗?)只需定义一个节点样式,测量标题的宽度并相应地设置文本宽度。
\documentclass{article}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepgfplotslibrary{groupplots}
\tikzset{subcaption/.style args={#1 with label #2}{text
width=width("#1")+0.7cm,node contents={\subcaption{#1 \label{#2}}},anchor =170}}
\begin{document}
\begin{figure}[htb!]
\centering
\begin{tikzpicture}
\begin{groupplot}[group style = {
group size = 1 by 2,
xlabels at = edge bottom,
xticklabels at = edge bottom,
vertical sep = 4pt
},
clip = false]
\nextgroupplot
\node[subcaption={Eggs with label fig:a},draw =
red,at={(rel axis cs: 1.01, 0.5)}];
\addplot plot coordinates {(0,0) (1,1) (2,2) (3,3)};
\nextgroupplot
\node[subcaption={Bacon and Ham with label fig:b},
draw = red,at={(rel axis cs: 1.01, 0.5)}];
\addplot plot coordinates {(0,0) (1,1) (2,4) (3,9)};
\end{groupplot}
\end{tikzpicture}
\caption{Caption of figure}
\end{figure}
Figure \ref{fig:a} and \ref{fig:b}
\end{document}