pgfplots 第 2 部分中从 x 轴到标记的直线

pgfplots 第 2 部分中从 x 轴到标记的直线

这篇文章是根据找到的帖子构建的这里有一个优雅的解决方案跳转

我想将红色标记附加到现有图中,以便图看起来像这样:

在此处输入图片描述

总之,我有两个数据集,它们目前是相同的值,因此出现上面的图。如何在 pgfplots 中获得相同的效果?谢谢。

以下是代码:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{filecontents}
\usepackage{graphicx}

\begin{filecontents*}{data.csv}
  Iter   y1 y2
     1, -0.9317521, -0.9317521
     2, 1.8946202, 1.8946202
     3, 0, 0
     4, 1.5797030, 1.5797030
     5, -1.8814457, -1.8814457
     6, 0, 0
     7, 2.0373926, 2.0373926
     8, 0, 0
     9, 1.9972528, 1.9972528
    10, 0, 0
\end{filecontents*}
\begin{document}
  \begin{tikzpicture}
    \begin{axis}[ybar,bar width=1pt,xlabel={$Number~of~Recursions$},ylabel={Absolute Parameter Error}]
      \addplot [mark=*,blue, fill=blue,mark options={scale=.65}]table[x index=0,y index=1,col sep=comma] {data.csv};
      %\addplot [mark=*,red, fill=blue,mark options={scale=.35}]table[x index=0,y index=1,col sep=comma] {data.csv};
      \addplot[blue,line width=1pt,sharp plot, update limits=false] coordinates {(0,0) (11,0)};
    \end{axis}
  \end{tikzpicture}
\end{document}

答案1

根据编辑的问题编辑答案

您声明不同的 y 值可以不同,但​​您为两个 y 列提供了相同的值。这就是为什么我y2将的第一个值更改为-1.5

其余内容请查看代码中的注释。

\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\usepackage{filecontents}
    \begin{filecontents*}{data.csv}
        Iter,   y1,         y2
         1,     -0.9317521, -1.5
         2,     1.8946202,  1.8946202
         3,     0,          0
         4,     1.5797030,  1.5797030
         5,     -1.8814457, -1.8814457
         6,     0,          0
         7,     2.0373926,  2.0373926
         8,     0,          0
         9,     1.9972528,  1.9972528
        10,     0,          0
    \end{filecontents*}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            xmin=0,
            xmax=11,
            xlabel=Number~of~Recursions,
            ylabel=Absolute Parameter Error,
        ]
            \addplot [
                mark=*,
                only marks,
                mark options={
                    %%% only draw the marker
                    % draw=color, fill=none
                    draw=red,
                    fill=red,
                    % adjust the line width of the marker
                    line width=1pt,
                }
            ] table [x=Iter,y=y2,col sep=comma] {data.csv};
            \addplot [
                ycomb,
                mark=*,
                blue,
                fill=blue,
                line width=1pt,
                % make marker smaller
                mark options={
                    scale=.5,
                }
            ] table [x=Iter,y=y1,col sep=comma] {data.csv};
            \addplot [
                blue,
                sharp plot,
                line width=1pt,
            ] coordinates {
                (\pgfkeysvalueof{/pgfplots/xmin},0)
                (\pgfkeysvalueof{/pgfplots/xmax},0)
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容