PGFPlot 散点图,带有随机颜色和图例

PGFPlot 散点图,带有随机颜色和图例

我想绘制一个 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}

相关内容