使用 pgfplot 的数据点标签中的换行符?

使用 pgfplot 的数据点标签中的换行符?

我有一个条形图,每列都有标签。我想将这些标签分成两行。我没有使用节点,因此“对齐“这个技巧似乎不适用。

最小示例:(来自 Lyx)

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\usepackage{tikz}
\usepackage{pgfplots}


\pgfplotsset{ mygraph/.style={ ybar, nodes near coords, every axis plot post/.append style={ point meta=explicit symbolic } }, mygraph/.default={} }

\makeatother
\usepackage{babel}

\begin{document}
\begin{tikzpicture}
\begin{axis}[mygraph,xmax=10,ymax=10,ytick={0,2,...,10}]
\addplot coordinates {(1,5) [Firstword Secondword]}; <= I want a line break here
\end{axis}
\end{tikzpicture}
\end{document}

答案1

你不应该使用,\addplot因为你实际上并不是在绘制图表。相反,请使用node

\node [align=left, text width=2cm] at (axis cs:2,6) {Firstword Secondword};

上面的代码相当于指定宽度的缩略图,文本适合该宽度。如果您希望手动指定换行符的位置,请使用类似以下代码:

\node[align=left] at (axis cs:2,8) {Firstword \\ Secondword};

答案2

好的,根据以下内容算出来了问题和答案。

解决办法是添加:

every node near coord/.append style={
    align=center,
    text width=1cm
}

回到序言。我的测试文档现在如下所示:

\documentclass[english]{article}
\usepackage[T1]{fontenc}
\usepackage[latin9]{inputenc}
\makeatletter
\usepackage{tikz}
\usepackage{pgfplots}

\pgfplotsset{ mygraph/.style={ ybar, nodes near coords, every node near coord/.append style={
    align=center,
    text width=1cm
},
every axis plot post/.append style={ point meta=explicit symbolic }
}, mygraph/.default={} }

\makeatother
\usepackage{babel}

\begin{document}
\begin{tikzpicture}
\begin{axis}[mygraph,xmax=10,ymin=4,ymax=10,ytick={0,2,...,10}]
\addplot coordinates {(6,5) [Two words]};
\addplot coordinates {(4,6) [First word]};
\end{axis}
\end{tikzpicture}
\end{document}

标签现在会自动分成多行,并位于列的正上方。

相关内容