![从表中向显式元节点标签添加文本](https://linux22.com/image/410443/%E4%BB%8E%E8%A1%A8%E4%B8%AD%E5%90%91%E6%98%BE%E5%BC%8F%E5%85%83%E8%8A%82%E7%82%B9%E6%A0%87%E7%AD%BE%E6%B7%BB%E5%8A%A0%E6%96%87%E6%9C%AC.png)
我在表格中有一些元数据,我将把它们作为条形标签包含在图中。我想指定这些标签是时间,例如 15.8 秒。我不知道如何将“秒”文本附加到标签上。
以下是 MWE:
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotstableread{
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11
1 94 0 5 6 6 15.8 2.0 37.5 42.3 42.3
2 93 0 5 7 7 16.1 2.1 30.7 43.1 42.5
3 97 0 11 13 13 18.6 1.9 39.0 51.6 51.9
4 87 34 93 93 93 34.6 34.6 93.8 93.3 92.4
}\inittable
\begin{tikzpicture}
\begin{axis}[
ybar, bar width=10pt,
width=6in, height=2.5in,
ymin=-5, ymax=120, ytick={0,50,100},
xmin=0, xmax=5, xtick={1,2,3,4},
point meta=explicit,
nodes near coords, every node near coord/.append style={
anchor= west, rotate=90, font=\footnotesize},
tick label style={font=\footnotesize},
]
\addplot table[x=c1,y=c2,meta=c7] {\inittable};
\addplot table[x=c1,y=c3,meta=c8] {\inittable};
\addplot table[x=c1,y=c4,meta=c9] {\inittable};
\addplot table[x=c1,y=c5,meta=c10] {\inittable};
\addplot table[x=c1,y=c6,meta=c11] {\inittable};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
的默认值node near coords
是\pgfmathprintnumber\pgfplotspointmeta
:它只是将点元值打印为数字。但它在 Ti 中这样做钾Z 节点,因此您只需向其中添加文本,它也会进入节点。因此,您想要做的事情可以用 来实现nodes near coords={\pgfmathprintnumber{\pgfplotspointmeta}~secs}
。但是,如果您这样做,您会看到一些“secs”延伸到上轴边框之上,因此您还需要添加类似 的内容enlarge y limits={upper, abs value=20}
。这两个更改将为您提供以下输出:
不过,就我个人而言,我宁愿使用siunitx
和s
作为第二个符号,如下所示:
nodes near coords={%
${\pgfmathprintnumber\pgfplotspointmeta} \, \si{\second}$%
}
请注意,xtick distance=1
和ytick distance=50
会稍微简化您的代码。此外,我使用\pgfplotsset{compat=1.16}
以确保即使在将来的版本中输出也将保持不变pfgplots
。
\documentclass[border=5pt]{standalone}
\usepackage{siunitx}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\pgfplotstableread{
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11
1 94 0 5 6 6 15.8 2.0 37.5 42.3 42.3
2 93 0 5 7 7 16.1 2.1 30.7 43.1 42.5
3 97 0 11 13 13 18.6 1.9 39.0 51.6 51.9
4 87 34 93 93 93 34.6 34.6 93.8 93.3 92.4
}\inittable
\begin{tikzpicture}
\begin{axis}[
ybar, bar width=10pt,
width=6in, height=2.5in,
ymin=-5, ymax=120, ytick distance=50,
xmin=0, xmax=5, xtick distance=1,
point meta=explicit,
enlarge y limits={upper, abs value=5},
nodes near coords={$\pgfmathprintnumber{\pgfplotspointmeta} \, \si{\second}$},
every node near coord/.append style={
anchor=west, rotate=90, font=\footnotesize,
},
tick label style={font=\footnotesize},
]
\addplot table[x=c1,y=c2,meta=c7] {\inittable};
\addplot table[x=c1,y=c3,meta=c8] {\inittable};
\addplot table[x=c1,y=c4,meta=c9] {\inittable};
\addplot table[x=c1,y=c5,meta=c10] {\inittable};
\addplot table[x=c1,y=c6,meta=c11] {\inittable};
\end{axis}
\end{tikzpicture}
\end{document}