我需要创建一个类似于这个问题但使用文本标签而不是数字。即从该示例来看,nodes
数据列应包含文本标签(带空格),并且这些标签需要在图表上。
然后,我想删除彩色标记,并根据label
数据文件中的列更改文本的颜色。
请问这可能吗?
[编辑] 这是代码
\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}
答案1
您可以使用相同的机制,将标记作为要绘制的文本,然后使用散点图类控制颜色等。对于非数字项,您需要value
向键添加关键字visualization depends on
以关闭数学解析。
\documentclass{article}
\usepackage{pgfplots,filecontents}
\pgfplotsset{compat=1.12}
\begin{filecontents*}{data.txt}
nodes x y label
{spaced label} 14.1209 7.0332 a
{spaced label} 0.6367 16.6166 a
{spaced label} 5.5385 11.7053 a
{spaced label} 0.9234 10.9945 a
{spaced label} 1.9426 18.3439 b
{spaced label} 16.4692 5.7168 b
{spaced label} 13.8966 15.1440 a
{spaced label} 6.3420 15.0746 a
{spaced label} 19.0044 7.6089 b
{spaced label} 0.6889 11.3564 b
\end{filecontents*}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}[xlabel=metri,ylabel=metri]
\addplot+[
visualization depends on={value \thisrow{nodes}\as\myvalue},
scatter/classes={
a={mark=text,text mark=\myvalue,blue},
b={mark=text,text mark=\myvalue,red}
},
scatter,draw=none,
scatter src=explicit symbolic]
table[x=x,y=y,meta=label]
{data.txt};
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}