pgfplots 散点图中标记标签之间的“碰撞”

pgfplots 散点图中标记标签之间的“碰撞”

有时,很难避免散点图中的标记标签“碰撞”,我的意思是标签相互重叠。如果我不想删除数据点以避免重叠,是否可以移动单个标签(就像 TikZ 节点一样)?以下 MWE 说明了这个问题:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\begin{document}
\begin{tikzpicture} 
\begin{axis}[
    xlabel=$a$,
    ylabel=$b$
]
\addplot[blue,mark=*,mark options={fill=blue},nodes near coords,only marks,
   point meta=explicit symbolic] table[meta=label] {
x y label
100 152 {Long label 1}
200 180 {Long label 2}
110 150 {Long label 3}
};
\end{axis}
\end{tikzpicture}
\end{document}

理想情况下,我希望能够调整选定标签的左/右/上/下。谢谢!

答案1

您可以添加您喜欢的锚点以及可能的其他属性,如下所示,

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}
\begin{document}
\begin{tikzpicture} 
\begin{axis}[
    xlabel=$a$,
    ylabel=$b$,
]
\addplot[blue,mark=*,mark options={fill=blue},nodes near coords,only marks,
   point meta=explicit symbolic,
   visualization depends on={value \thisrow{anchor}\as\myanchor},
   every node near coord/.append style={anchor=\myanchor}
] table[meta=label] {
x y label anchor
100 152 {Long label 1} south
200 180 {Long label 2} east
110 150 {Long label 3} west
};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

在这里,您实际上可以使其变得更加复杂,例如测试是否\thisrow{}为空,然后使用默认值或输入值等。

相关内容