pgfplots:并排显示多个系列的散点图

pgfplots:并排显示多个系列的散点图

我有多台机器用于进行基准测试。现在我想使用 pgfplots 在单个图表中显示单个 x 值(基准测试参数)的多个 y 值(测量中的方差)。每台机器都应该在图中拥有自己的“列”,类似于ybar使用多个addplot命令产生的效果。

其他 问题我已经找到了有价值的提示,但是图例被手动标记偏移(xshift)破坏了,因为它也应用在那里。

以下是 MWE:

\documentclass[border=1mm]{standalone}
\usepackage{pgfplotstable}

\begin{document}

\pgfplotstableread{
  A B   C
  foo   1   2.4
  foo   1   2.1
  foo   1   2.6
  foo   1   2.3
}\dataA

\pgfplotstableread{
  A B   C
  bar   1   2.9
  bar   1   2.2
  bar   1   2.5
  bar   1   2.1
}\dataB

\begin{tikzpicture}
  \begin{axis}[only marks, ybar, symbolic x coords={1}, xtick={1}]

    \foreach \id / \offs / \tab in {foo/-4/\noexpand\dataA, bar/4/\noexpand\dataB} {
     \edef\temp{\noexpand\addplot+ [every mark/.append style={xshift=\offs pt}] table[x=B, y=C] {\tab};
      \noexpand\addlegendentry{\id}
     }

     \temp
    }

  \end{axis}
\end{tikzpicture}

\end{document}

enter image description here

xoffset我已经尝试通过添加[every mark/.append style={xshift=-\offs pt}]命令来弥补addlegendentry,但没有任何效果。

怎样才能在不弄乱图例的情况下,在情节中获得所需的“柱状效果”?

答案1

该键legend image post style附加到的every legend image post样式仅影响小图例图像(而不影响图例或文本)。

通过发布/tikz/xshift/.style=我们只是禁用了xshift密钥。

代码

\documentclass[border=1mm]{standalone}
\usepackage{pgfplotstable}

\pgfplotstableread{
  A B   C
  foo   1   2.4
  foo   1   2.1
  foo   1   2.6
  foo   1   2.3
}\dataA

\pgfplotstableread{
  A B   C
  bar   1   2.9
  bar   1   2.2
  bar   1   2.5
  bar   1   2.1
}\dataB

\begin{document}
\begin{tikzpicture}
  \begin{axis}[only marks, ybar, symbolic x coords={1}, xtick={1}, 
    legend image post style={/tikz/xshift/.style=}
  ]
    \foreach \id / \offs / \tab in {foo/-4/\noexpand\dataA, bar/4/\noexpand\dataB} {
      \edef\temp{\noexpand\addplot+ [every mark/.append style={xshift=\offs pt}] table[x=B, y=C] {\tab};
        \noexpand\addlegendentry{\id}
      }
      \temp
    }
 \end{axis}
\end{tikzpicture}
\end{document}

输出

enter image description here

相关内容