这是如何添加另一行刻度标签?我目前为一组绘图中的每个绘图都添加了另一行刻度标签。我想要做的是让额外一行刻度标签的描述在每行绘图中仅出现一次,就像y descriptions at=edge left
轴描述一样。
我目前得到的内容如下,其中标记了不良的描述:
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{
domain=0:1,
xmin=0, xmax=1,
ymax=1, ymin=-1
}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{groupplot}[width=6cm,
clip=false,
xtick align=inside,
extra x ticks={0, 0.2, 0.4, ..., 1},
every extra x tick/.style={major tick length=0pt,
xtick align=outside, yshift=-10pt},
group style={group size=2 by 2,
y descriptions at=edge left},
ylabel={\(f(x)\)},
]
\pgfplotsinvokeforeach{0.2, 0.4, 0.6, 0.8}{
\nextgroupplot[extra x tick labels={#1, #1, #1, #1, #1 ,#1}]
\addplot{#1 - x};
\node at (axis description cs:0,0) [anchor=north east, align=left,xshift=-12pt] {\(x_1\)};
\node at (axis description cs:0,0) [anchor=north east, align=left,xshift=-12pt,yshift=-11pt] {\(x_2\)};
}
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}
显然,我可以跳过循环,明确写出每个情节及其选项。但这似乎是一种黑客行为和糟糕的风格。例如,这意味着内容和风格不太分离。理想情况下,我希望保留循环,但仍然可以控制样式选项,例如通过允许您执行类似操作的界面extra x descriptions at=edge left
。
答案1
网格的当前列groupplots
存储在\pgfplots@group@current@column
计数器中。您可以使用它来检查我们是否在第一列,并且仅在第一列时才打印额外的标签。
该方法还可用于通过使用\pgfplots@group@current@plot
包含绘图索引的计数器仅向第一个绘图添加图例。
\documentclass{article}
\usepackage{pgfplots}
\makeatletter
\newcommand{\currentcolumn}{\the\pgfplots@group@current@column}
\newcommand{\currentplot}{\the\pgfplots@group@current@plot}
\makeatother
\usepgfplotslibrary{groupplots}
\pgfplotsset{
domain=0:1,
xmin=0, xmax=1,
ymax=1, ymin=-1
}
\begin{document}
\begin{figure}
\begin{tikzpicture}
\begin{groupplot}[width=6cm,
clip=false,
xtick align=inside,
extra x ticks={0, 0.2, 0.4, ..., 1},
every extra x tick/.style={major tick length=0pt,
xtick align=outside, yshift=-10pt},
group style={group size=2 by 2,
y descriptions at=edge left},
ylabel={\(f(x)\)},
]
\pgfplotsinvokeforeach{0.2, 0.4, 0.6, 0.8}{
\nextgroupplot[extra x tick labels={#1, #1, #1, #1, #1 ,#1}]
\addplot{#1 - x};
\ifnum\currentcolumn=1
\node at (axis description cs:0,0) [anchor=north east, align=left,xshift=-12pt] {\(x_1\)};
\node at (axis description cs:0,0) [anchor=north east, align=left,xshift=-12pt,yshift=-11pt] {\(x_2\)};
\fi
\ifnum\currentplot=1
\pgfplotsset{legend entries=Boring Data}
\fi
}
\end{groupplot}
\end{tikzpicture}
\end{figure}
\end{document}