图例位置和坏 x 刻度

图例位置和坏 x 刻度

我目前正在试验 tikz-pgf,但面临一些强烈的行为。

  1. 一个群图怎么可能只有 1 个图例?
  2. 为什么第一个图下方出现了 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

  1. 要创建通用图例,请\addlegendimage在其中一个\nextgroupplot图例中添加所有图例条目(使用)。要将其放置在任意位置(例如,水平居中或垂直居中,在我看来,这是通用图例的最佳选择),请使用,legend to name然后创建带有引用的节点。
  2. 要删除·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} 

编译代码

相关内容