向 PGFPlot 添加一条水平线并将其添加到图例中

向 PGFPlot 添加一条水平线并将其添加到图例中

我有一个 PGF 图,其中包含来自 CSV 文件的一些计算结果。在生成 CSV 文件时,有一个未知的值。但是,该值也需要显示在图中。

我目前有的是:

\begin{figure}
    \centering
    \begin{tikzpicture}
        \begin{axis} [xlabel=Iteration, ylabel=Objective]
            \addplot [mark=none, blue] table [x=it, y=C, col sep=comma] {data.csv};
            \addlegendentry{Incumbent Solution}
            \addplot [mark=none, red] table [x=it, y=C*, col sep=comma] {data.csv};
            \addlegendentry{Best Solution}
        \end{axis}
    \end{tikzpicture}
    \caption{Convergence of our simulated annealing algorithm}
    \label{fig_SA}
\end{figure}

放置两条曲线。现在我想在图上添加一条直线,并在图例“最佳解决方案”中添加与该直线对应的条目。

如果更容易的话,我可以将其添加到 CSV 中,但我更希望将其添加到我的 TeX 代码中。

我看见这个类似的问题但我认为任何提出的解决方案都不支持将数据系列添加到图例中。

答案1

pgfplots默认情况下将绘制函数,并且函数的最简单情况是常数值,正如您所要求的那样。只需添加\addplot[mark=none, black] {0.5};(替换0.5为您的常数值)并设置合适的样式即可。图例条目以通常的方式添加。

绘图函数的默认值为domain[-5,5],这将改变初始绘图的视图。我已通过在环境选项中设置xmin和限制来限制这一点。我还根据 Christian Feuersänger 在评论中的建议设置了略微减轻计算负荷。默认值为,但我们只需要 2 个样本即可充分表示常数。xmaxaxissamples=2samples=25

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}

\begin{document}
\begin{tikzpicture}
\begin{axis}[%
  xlabel=Iteration,
  ylabel=Objective,
  xmin=-0.1,xmax=1.1, % <-- added here to preserve view
]
  \addplot[mark=none, blue] coordinates {(0,0) (1,1)};
  \addlegendentry{Incumbent Solution}
  \addplot[mark=none, red] coordinates {(0,1) (1,0)};
  \addlegendentry{Best Solution}
  \addplot[mark=none, black, samples=2] {0.5};
  \addlegendentry{Constant Value}
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容