`pgfplots`:`const plot mark mid` 和 `\ref`

`pgfplots`:`const plot mark mid` 和 `\ref`

我想const plot mark mid将提供的样式pgfplots\ref图一起使用。但是引用显示了通常图例中不存在的故障。MWE 是:

\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[const plot mark mid] coordinates {
(0,0.1) (0.1,0.15) (0.2,0.5) (0.3,0.62)
(0.4,0.3) (0.5,0.2) (0.6,0.25) (0.7,0.1)
}; \addlegendentry{works} \label{plot}
\end{axis}
\end{tikzpicture}
\ref{plot} broken
\end{document}

生成的图像如下所示

我遇到了同样的问题,但这个问题在和以及相应的样式中都jump mark mid没有出现。我可以假设这是一个错误吗?我该如何解决它?const plot mark leftconst plot mark rightjump

答案1

这似乎是一个可以通过以下 MWE 重现的错误:

\documentclass{standalone}
\usepackage{tikz}

\begin{document}
\tikz[yshift=0.3em] {
    \draw[const plot mark mid]
        plot coordinates {(0cm,0cm) (0.3cm,0cm) (0.6cm,0cm)};
}
\end{document}

为了实现此效果,需要满足以下先决条件:

  • const plot mark mid必须为该命令设置选项\draw
  • 图的坐标列表必须至少有三个坐标。
  • yshift必须为宏设置非零值的选项\tikz

由于此效果仅发生在const plot mark mid,您可以通过选项覆盖图例图像legend image code并告诉它使用其他样式:

\documentclass{standalone}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot+[const plot mark mid, 
    legend image code/.code={
        \draw[mark repeat=2, mark phase=2, const plot]
            plot coordinates {(0cm,0cm) (0.3cm,0cm) (0.6cm,0cm)};
    }] coordinates {
(0,0.1) (0.1,0.15) (0.2,0.5) (0.3,0.62)
(0.4,0.3) (0.5,0.2) (0.6,0.25) (0.7,0.1)
}; \addlegendentry{works} \label{plot}
\end{axis}
\end{tikzpicture}
\ref{plot} no longer broken
\end{document}

在此处输入图片描述

相关内容