循环无法与 pgfplots \foreach 配合使用

循环无法与 pgfplots \foreach 配合使用

我正在尝试绘制文本文件中的一些数据,并且希望能够使用自定义列表循环标记的样式。我能够让循环列表正常工作,但是当我添加误差线时,出现了问题。最初,我的代码如下:

\documentclass[11pt]{standalone}

\usepackage{pgfplots}

\pgfplotsset{compat=1.8}

\pgfplotscreateplotcyclelist{mylist}{%
{black,mark=square,draw=none},
{black,mark=o,draw=none},
{black,mark=triangle,draw=none},
{black,mark=diamond,draw=none}}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
        legend pos=south east,
        legend entries={Trial 1,
                        Trial 2,
                        Trial 3},
        cycle list name=mylist,
        legend image post style = only marks
        ]

        \foreach \yindex in {2,4,6}
        \addplot  table[x index = 0, y index = \yindex] {data.txt};
    \end{axis}
    \end{tikzpicture}
\end{document}

这产生了下面的图像:

我的工作图没有误差线

然后,我做了以下更改,以便能够将错误列添加到我的图中,这导致图不包含任何标记信息,而是在没有标记的点之间画直线。

我的绘图图片格式不正确

\foreach[evaluate=\yindex as \ynext using int(\yindex+1)] \yindex in {2,4,6}
    \addplot [error bars/.cd,y dir=both,y explicit, x dir = both, x explicit] 
        table[x index = 0, x error index = 1, y index = \yindex, y error index = \ynext]
        {data.txt};

有什么想法可能导致此问题和/或如何解决它?我将不胜感激,谢谢!

编辑:忘记包含正在加载的数据文件。如果感兴趣的话,它是一个简单的制表符分隔文件。交替列 (1,3,5,7) 对应于绘图值,(2,4,6,8) 对应于相关的误差线。第 1 列和第 2 列是 x 轴。

23    0.25    1.75    0.0625    1.625    0.0625    1.75     0.0625
25    0.25    1.75    0.0625    1.75     0.0625    1.875    0.0625
27    0.25    2.125   0.0625    2        0.0625    2.25     0.0625
29    0.25    2.5     0.0625    2.5      0.0625    2.5      0.0625
31    0.25    2.5     0.0625    2.5      0.0625    2.5      0.0625
33    0.25    2.5     0.0625    2.5      0.0625    2.5      0.0625

答案1

我可以通过将\addplot命令更改为并在命令中\addplot+添加参数来解决这个问题。希望这对其他人有所帮助!cycle list name\addplot+

这是我的特定问题的最终代码:

\foreach[evaluate=\yindex as \ynext using int(\yindex+1)] \yindex in {2,4,6}
    \addplot+ [cycle list name=mylist,error bars/.cd,y dir=both,y explicit,x dir = both, x
        explicit] table[x index = 0, x error index = 1, y index = \yindex, y error index = 
        \ynext] {data.txt};

相关内容