我目前正在试验 tikz-pgf,但面临一些强烈的行为。
- 一个群图怎么可能只有 1 个图例?
- 为什么第一个图下方出现了 10^(-3) 这个比例?
这是 MWE:
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={
group name=my plots,
group size=1 by 2,
xlabels at=edge bottom,
xticklabels at=edge bottom,
vertical sep=0pt
},enlarge x limits=false,height=3cm, width=.8\textwidth,grid=major,scaled x ticks=base 10:3,legend cell align=left,legend pos=outer north east]
\nextgroupplot
\addplot[domain=0:0.05,samples=200] {1.2*sin(2*pi*50*\x r)};
\addplot[red,domain=0:0.05,samples=200] {0.8*sin(2*pi*50*(\x r-0.25))};
\legend{U [V],I [A]};
\nextgroupplot[xlabel={t [s]}]
\addplot[green,domain=0:0.05,samples=200] {0.8*1.2*sin(2*pi*50*\x r)*sin(2*pi*50*(\x r-0.25))};
\legend{S [VA]};
\end{groupplot}
\end{tikzpicture}
\end{document}
以下是输出的说明:
答案1
- 要创建通用图例,请
\addlegendimage
在其中一个\nextgroupplot
图例中添加所有图例条目(使用)。要将其放置在任意位置(例如,水平居中或垂直居中,在我看来,这是通用图例的最佳选择),请使用,legend to name
然后创建带有引用的节点。 - 要删除·10 -3标记,您可以
xtick scale label code/.code={}
向定义添加选项\nextgroupplot
。
请参阅附件的示例:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{groupplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={
group name=my plots,
group size=1 by 2,
xlabels at=edge bottom,
xticklabels at=edge bottom,
vertical sep=0pt
}, enlarge x limits=false, height=3cm, width=.8\textwidth, grid=major,
scaled x ticks=base 10:3, legend cell align=left]
\nextgroupplot[xtick scale label code/.code={}, legend to name=fig:my plots:grouplegend]
\addplot[domain=0:0.05,samples=200] {1.2*sin(2*pi*50*\x r)};
\addplot[red,domain=0:0.05,samples=200] {0.8*sin(2*pi*50*(\x r-0.25))};
\addlegendimage{green, line legend}
\legend{U [V],I [A],S [VA]}
\nextgroupplot[xlabel={t [s]}]
\addplot[green,domain=0:0.05,samples=200]
{0.8*1.2*sin(2*pi*50*\x r)*sin(2*pi*50*(\x r-0.25))};
\end{groupplot}
\node [right] at ($(my plots c1r1.east)!.5!(my plots c1r2.east)$)
{\ref{fig:my plots:grouplegend}};
\end{tikzpicture}
\end{document}
如果我可以提出一些建议,那么如果您缩放 x 刻度,但通过在单位前加上前缀来告知读者,可能会更具可读性。您可以通过添加 来实现scaled x ticks=manual:{}{\pgfmathparse{#1*1000}}
。在这种情况下,不会出现有缺陷的 ·10 -3标记:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepgfplotslibrary{groupplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={
group name=my plots 2,
group size=1 by 2,
xlabels at=edge bottom,
xticklabels at=edge bottom,
vertical sep=0pt
}, enlarge x limits=false, height=3cm, width=.8\textwidth, grid=major,
scaled x ticks=manual:{}{\pgfmathparse{#1*1000}}, legend cell align=left]
\nextgroupplot[legend to name=fig:my plots 2:grouplegend]
\addplot[domain=0:0.05,samples=200] {1.2*sin(2*pi*50*\x r)};
\addplot[red,domain=0:0.05,samples=200] {0.8*sin(2*pi*50*(\x r-0.25))};
\addlegendimage{green, line legend}
\legend{U [V],I [A],S [VA]}
\nextgroupplot[xlabel={t [ms]}]
\addplot[green,domain=0:0.05,samples=200]
{0.8*1.2*sin(2*pi*50*\x r)*sin(2*pi*50*(\x r-0.25))};
\end{groupplot}
\node [right] at ($(my plots 2 c1r1.east)!.5!(my plots 2 c1r2.east)$)
{\ref{fig:my plots 2:grouplegend}};
\end{tikzpicture}
\end{document}