假设我有一个这样的文件:
\documentclass{standalone}
\usepackage{pgfplots,filecontents}
\begin{filecontents*}{data}
1 10 type1
2 25 type2
3 75 type2
4 100 type3
5 150 type3
\end{filecontents*}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\addplot[scatter,only marks]
table[row sep=crcr] {data};
\end{axis}
\end{tikzpicture}
\end{document}
生成此图(注意,代码在引入第三个数据列时将其玩具扔出了婴儿车,并弄乱了(1,10)和(2,25)坐标的绘制):
我如何能:
- 根据“类型”列为每个散点着色,或者为每个散点分配一个随机符号。我意识到后者可能需要“if type=type1, symbol=triangle”类型的语句,这是可以的。
- 创建图例来指示哪种颜色属于哪种数据类型
我可以使用针对每种数据类型的单独命令手动执行此操作,\addplot
然后按\addlegendentry{type1}
,但肯定有一种简单的方法可以使用单个命令自动执行此操作addplot
?
答案1
在 PGFPLOTS 手册中有一个例子可以完全满足您的要求。目前它位于第 107 页,或者4.5.11 散点图。
\documentclass[border=9,tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend pos=south east]
\addplot[
scatter,only marks,scatter src=explicit symbolic,
scatter/classes={
a={mark=square*,blue},
b={mark=triangle*,red},
c={mark=o,draw=black,fill=black}
}
]
table[x=x,y=y,meta=label]{
x y label
0.1 0.15 a
0.45 0.27 c
0.02 0.17 a
0.06 0.1 a
0.9 0.5 b
0.5 0.3 c
0.85 0.52 b
0.12 0.05 a
0.73 0.45 b
0.53 0.25 c
0.76 0.5 b
0.55 0.32 c
};
\legend{Class 1,Class 2,Class 3}
\end{axis}
\end{tikzpicture}
\end{document}