我用 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 轴上方和下方的间距,而不是改变ymin
和ymax
。
\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}
。使用宏作为坐标很可能会导致错误。