我将使用 pgfplots 使用包含以下数据的 dat 文件中的数据创建散点图:
nodes x y label
1.0000 14.1209 7.0332 a
2.0000 0.6367 16.6166 a
3.0000 5.5385 11.7053 a
4.0000 0.9234 10.9945 a
5.0000 1.9426 18.3439 b
6.0000 16.4692 5.7168 b
7.0000 13.8966 15.1440 a
8.0000 6.3420 15.0746 a
9.0000 19.0044 7.6089 b
10.0000 0.6889 11.3564 b
我将创建一个散点图,其中第一列是每个散点的标签,而接下来的两列是 x 和 y。最后一列是一个类,它决定散点是红色还是蓝色。这是我创建的代码
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[xlabel=metri,ylabel=metri]
\addplot[nodes near coords*={\thisrow{nodes}},
scatter/classes={
a={mark=*,blue},
b={mark=*,red}
},
scatter, only marks,
scatter src=explicit symbolic]
table[x=x,y=y,meta=label]
{./MATLAB/grafici/network_map.txt};
\end{axis}
\end{tikzpicture}
\end{figure}
不幸的是,这样我没能得到标签。有些东西不起作用
答案1
由于您使用颜色的元信息,因此您需要使用visualization depends on
其余数据。并且它应该位于scatter src
选项之后,否则它将被覆盖。
\documentclass{article}
\usepackage{pgfplots,filecontents}
\pgfplotsset{compat=1.7}
\begin{filecontents*}{mydata.dat}
nodes x y label
1.0000 14.1209 7.0332 a
2.0000 0.6367 16.6166 a
3.0000 5.5385 11.7053 a
4.0000 0.9234 10.9945 a
5.0000 1.9426 18.3439 b
6.0000 16.4692 5.7168 b
7.0000 13.8966 15.1440 a
8.0000 6.3420 15.0746 a
9.0000 19.0044 7.6089 b
10.0000 0.6889 11.3564 b
\end{filecontents*}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[xlabel=metri,ylabel=metri]
\addplot[
visualization depends on={\thisrow{nodes}\as\myvalue},
scatter/classes={
a={mark=*,blue},
b={mark=*,red}
},
scatter, only marks,
scatter src=explicit symbolic,
nodes near coords*={\pgfmathprintnumber[int detect]\myvalue},]
table[x=x,y=y,meta=label]
{mydata.dat};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}