Comment changer la forme des points avec pgfplots ?#

L’extension pgfplots permet de présenter des graphiques couramment utilisés en analyse de données. Elle dipose de nombreuses options de configuration.

1.  Une forme des points simple#

Dans l’exemple suivant, la forme des points est déterminée par l’option mark. De nombreuses possibilités existent : *, +, triangle,square. Vous pouvez en trouver une liste dans la section « Markers » de la documentation de pgfplots.

% Un fichier de données créé par le document avec l'environnement filecontents
\begin{filecontents*}{donnees.dat}
  x  y label
  0.12 15 c
  0.35 42 c
  0.27 8 c
  0.86 56 a
  0.83 37 b
  0.90 35 b
  0.64 62 a
  0.67 28 b
  0.30 23 c
\end{filecontents*}

% Le document LaTeX
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[enlargelimits=0.1]
    \addplot+[
      only marks,
      mark=square*,
      mark size=0.1cm]
      table[meta=label] {donnees.dat};
  \end{axis}
\end{tikzpicture}
\end{document}

2.  Une forme des points conditionnelle#

Il est possible d’avoir une forme des points fonction de certaines variables, comme le fait l’exemple suivant.

% Un fichier de données créé par le document avec l'environnement filecontents
\begin{filecontents*}{donnees.dat}
  x  y label
  0.12 15 c
  0.35 42 c
  0.27 8 c
  0.86 56 a
  0.83 37 b
  0.90 35 b
  0.64 62 a
  0.67 28 b
  0.30 23 c
\end{filecontents*}

% Le document LaTeX
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[enlargelimits=0.1]
    \addplot+[
      only marks,
      scatter,
      point meta=explicit symbolic,
      scatter/classes={
        a={mark=square*},
        b={mark=triangle*},
        c={mark=o}
        },
      mark size=0.1cm]
      table[meta=label] {donnees.dat};
  \end{axis}
\end{tikzpicture}
\end{document}

3.  Pour avoir encore plus de formes#

L’extension oPlotSymbl fournit un grand nombre de formes supplémentaires. Ici, la liste des hexagones disponibles :

\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{tikz}
  \usepackage{oplotsymbl}

\begin{document}
\begin{tabular}{cll}
\hline
Symbole       & Commande             & Description                       \\ \hline
\hexago       & \verb+\hexago+       & Forme standard                    \\
\hexagofill   & \verb+\hexagofill+   & Hexagone plein                    \\
\hexagodot    & \verb+\hexagodot+    & Hexagone avec un point            \\
\hexagolinev  & \verb+\hexagolinev+  & Hexagone avec un trait vertical   \\
\hexagolineh  & \verb+\hexagolineh+  & Hexagone avec un trait horizontal \\
\hexagolinevh & \verb+\hexagolinevh+ & Hexagone avec une croix grecque   \\
\hexagocross  & \verb+\hexagocross+  & Hexagone avec une croix décussée  \\
\hexagofillha & \verb+\hexagofillha+ & Hexagone à moitié plein (haut)    \\
\hexagofillhb & \verb+\hexagofillhb+ & Hexagone à moitié plein (bas)     \\
\hexagofillhr & \verb+\hexagofillhr+ & Hexagone à moitié plein (droite)  \\
\hexagofillhl & \verb+\hexagofillhl+ & Hexagone à moitié plein (gauche)  \\
\hline
\end{tabular}
\end{document}

La documentation donne une liste complète.

À faire

Faire le lien entre cette solution et les précédentes