对于某些符号坐标,带有靠近坐标的节点的 pgfplots 会失败

对于某些符号坐标,带有靠近坐标的节点的 pgfplots 会失败

我用 pgfplots 制作了一个图,其中包含symbolic coords通过 输入的特殊字符\texttt。当我启用 时nodes near coords,LaTeX 会阻止这些特殊字符。

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{tikz}

\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}

\begin{tikzpicture}
\hspace{-0.4cm}
% example derived from §4.5.4 ("Bar Plots") of the pgfplots reference
\begin{axis}[
  height=3cm,
  width=6.8cm,
  xbar,
  symbolic y coords={\texttt{N}, B},
  %nodes near coords,   % <--- uncomment for failure
  ytick=data,
  ytick style={draw=none},
  ymin={[normalized]-0.75},
  ymax={[normalized]2.75},
  ]
  \addplot coordinates {
    (4.1,\texttt{N})
    (5.5,B)
  };
\end{axis}

\end{tikzpicture}

\end{document}

取消注释时nodes near coords

! Argument of \XC@definec@lor has an extra }.
<inserted text> 
                \par 
l.30 \end{axis}

...

\mathbb使用 Instead of 时也会发生同样的情况\texttt

你知道nodes near coords在我的情况下如何才能正确地工作吗?

答案1

如果您想设置刻度标签的样式,我建议使用选项yticklabels来定义 y 轴的标签。此外,我可能只使用数字坐标将数据定位在 y 轴上,这通常更容易处理。

也许还可以考虑使用enlarge y limits={0.75}来增加 y 轴上方和下方的间距,而不是改变yminymax

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\begin{document}

\begin{tikzpicture}
\hspace{-0.4cm}
% example derived from §4.5.4 ("Bar Plots") of the pgfplots reference
\begin{axis}[
  height=3cm,
  width=6.8cm,
  xbar,
%  symbolic y coords={N, B}, 
  yticklabels={\texttt{N}, B},
  nodes near coords,          % <--- uncomment for success
  ytick=data,
  ytick style={draw=none},
  enlarge y limits={0.75},
%  ymin={[normalized]-0.75},
%  ymax={[normalized]2.75},
  ]
  \addplot coordinates {
    (4.1,1)
    (5.5,2)
  };
\end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

如果您确实想使用符号坐标,您可以添加选项symbolic y coords={N, B}(即:只使用常规字符串,不使用宏)并将坐标放置在(4.1,N)和处(5.5,B)。同样,您可以使用格式化标签yticklabels={\texttt{N}, B}。使用宏作为坐标很可能会导致错误。

相关内容