防止在 pgfplot 中重复刻度标签

防止在 pgfplot 中重复刻度标签

我正在尝试在绘图中指定我自己的 xtick 标签。通过定义“常规方式”时的问题xticklabel={a1, a2, ...}在于,现在我的整个标签列表在每个 xtick 上都被使用和重复,见图。

在此处输入图片描述

当我从文件读取标签时,我可以避免这种情况。我做错了什么?

梅威瑟:

\begin{filecontents*}{data.dat}
a  b  c  d  
0  5  3  4     
1  6  3  4   
2  7  3  4   
3  8  3  4   
4  9  3  4 
\end{filecontents*}
\begin{filecontents*}{names.dat}
names
a1
a2
a3
a4
a5
\end{filecontents*}

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
    xtick={0, 1, 2, 3, 4, 5},
    %xticklabels from table={names.dat}{names}, % this works
    xticklabel={a1, a2, a3, a4, a5},            % this does not
    ]
        \addplot table [x=a, y=b] {data.dat};
        \addplot table [x=a, y=c] {data.dat};
        \addplot table [x=a, y=d] {data.dat};
    \end{axis}
\end{tikzpicture}
\end{document}

答案1

xticklabel为所有刻度指定单个标签。在您的 MWE 中,xticklabel={a1, a2, a3, a4, a5}将每个标签设置为a1, a2, a3, a4, a5。替换xticklabelxticklabels可实现预期行为。

\begin{filecontents*}{data.dat}
a  b  c  d  
0  5  3  4     
1  6  3  4   
2  7  3  4   
3  8  3  4   
4  9  3  4 
\end{filecontents*}
\begin{filecontents*}{names.dat}
names
a1
a2
a3
a4
a5
\end{filecontents*}

\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
    \begin{axis}[
    xtick={0, 1, 2, 3, 4, 5},
    %xticklabels from table={names.dat}{names}, % this works
    xticklabels={a1, a2, a3, a4, a5},           % this works too
    %xticklabel={a1, a2, a3, a4, a5},           % this does not
    ]
        \addplot table [x=a, y=b] {data.dat};
        \addplot table [x=a, y=c] {data.dat};
        \addplot table [x=a, y=d] {data.dat};
    \end{axis}
\end{tikzpicture}
\end{document}

相关内容