我想绘制一个 PGFplot,其中每个点都有一个单独的图例条目和随机颜色。到目前为止,我只有一个图例条目,所有内容都是黑色的:
\begin{tikzpicture}
\pgfplotsset{
scale only axis,
}
\begin{axis}[
xlabel={A},
ylabel={B}
]
\addplot[only marks]
coordinates{
(1.25,96.88)
(0.58,96.25)
(0.77,96.25)
(1.17,96.04)
(0.89,96.04)
(3.50,95.83)
(1.11,95.63)
(1.12,95.42)
(2.32,95.42)
(0.48,95.21)
(1.65,94.58)
(4.08,94.38)
(5.15,94.38)
(1.07,94.17)
(0.13,93.75)
(0.21,92.71)
(0.10,89.38)
};
\addlegendentry{plot 1}
\end{axis}
\end{tikzpicture}
答案1
\documentclass{article}
\usepackage{xcolor}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.18}
\pgfplotstableread{
1.25 96.88
0.58 96.25
0.77 96.25
1.17 96.04
0.89 96.04
3.50 95.83
1.11 95.63
1.12 95.42
2.32 95.42
0.48 95.21
1.65 94.58
4.08 94.38
5.15 94.38
1.07 94.17
0.13 93.75
0.21 92.71
0.10 89.38
} \table
\pgfplotstablegetrowsof{\table}
\pgfmathsetmacro{\maxRowIndex}{\pgfplotsretval-1}
\pgfplotsset{
select row/.style={
x filter/.code={\ifnum\coordindex=#1\else\def\pgfmathresult{}\fi}
},
}
\pgfmathsetseed{1} % for reproducibility
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotsinvokeforeach{0,...,\maxRowIndex}{
\pgfmathsetmacro{\R}{rnd}
\pgfmathsetmacro{\G}{rnd}
\pgfmathsetmacro{\B}{rnd}
\definecolor{color#1}{rgb}{\R,\G,\B}
\addplot[only marks,select row=#1,color#1] table \table;
\addlegendentry{plot #1}
}
\end{axis}
\end{tikzpicture}
\end{document}
答案2
这完全不是一个答案,有点涉及而没有任何传奇色彩,只是为了好玩的评论。
这个图让我想起了我最喜欢的一幅关于社区社会关系、自由等内容的插图。特征人物的颜色是随机的,地点的中心是随机的,人们周围范围的半径是随机的。
动画会更有趣!
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\pagecolor{yellow!5}
\begin{document}
\def\n{8}
\foreach \factor in {1,.5,rnd}{
\pgfmathsetseed{2022}
\begin{tikzpicture}
\foreach \i in {0,...,\n}
\foreach \j in {0,...,\n}{
\pgfmathsetmacro{\R}{rnd}
\pgfmathsetmacro{\G}{rnd}
\pgfmathsetmacro{\B}{rnd}
\definecolor{randcolor}{rgb}{\R,\G,\B}
\pgfmathsetmacro{\randradius}{rnd*1pt}
\coordinate (randcenter) at (\i+rnd,\j+rnd);
\fill[randcolor,fill opacity=\factor] (randcenter) circle(\randradius);
}
\end{tikzpicture}
}
\end{document}