pgfplots 除了符号坐标之外的其他刻度标签

pgfplots 除了符号坐标之外的其他刻度标签
\documentclass{scrartcl}

\usepackage{tikz}
\usepackage{pgfplots}

\begin{document}
  \begin{tikzpicture}
  \begin{axis}[
        symbolic y coords={A},
        ytick={A}, % I want to have B here
    ]
    \addplot+[only marks] coordinates {
    (1,{A})
    };
  \end{axis}
  \end{tikzpicture}
\end{document}

我希望B第一步是让勾号标签显示出来。输入B指示的位置会抛出:

Package pgfplots Error: Sorry, the input coordinate `B' has not been defined mething like [normalized]B?. ]

如果可能的话,我希望(作为第二步)标签B周围有一个漂亮的圆圈,我用宏在文档的其他地方绘制这个圆圈:

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,inner sep=1pt,font=\footnotesize] (char) {#1};}}

打字ytick={\circled{B}}导致pdfLaTeX挂起。

答案1

感谢@percusse 的提示,在这里回答我自己的问题。需要指定symbolic y coordsytick yticklabels. 但不知道为什么。

\documentclass{scrartcl}

\usepackage{tikz}
\usepackage{pgfplots}

\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
        \node[shape=circle,draw,inner sep=1pt,font=\footnotesize] (char) {#1};}}

\begin{document}
    \begin{tikzpicture}
    \begin{axis}[
    symbolic y coords={{A},{C}},
    ytick={A,C},
    yticklabels={\circled{B1},\circled{B2}},
    ]
    \addplot+[only marks] coordinates {
        (1,{A})
    };
    \addplot+[only marks] coordinates {
        (2,{C})
    };
    \end{axis}
    \end{tikzpicture}
\end{document}

输出

相关内容