
Quero desenhar um diagrama de voronoi com pgfplots, mas infelizmente não consigo fazer como deveria. Usei o comando Matlab para obter as coordenadas xey e salvei-as como um arquivo dat. Nesse arquivo armazenei as coordenadas x na primeira coluna e as coordenadas y na segunda coluna.
Alguém tem uma ideia de como isso poderia funcionar?
Exemplo mínimo do código:
\documentclass{standalone}
\usepackage{amsmath,amsfonts,amssymb}
\usepackage{mathtools}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage[svgnames]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{tikz}
\usetikzlibrary{positioning,fit,calc,shapes,arrows,external,3d,patterns,spy}
\usepackage{filecontents}
\begin{document}
\begin{filecontents*}{data.dat}
-7.9265104e+00 3.6503989e-01
4.3133971e-01 9.4062409e-01
-7.9265104e+00 3.6503989e-01
6.3976919e-02 5.4947497e-01
6.3976919e-02 5.4947497e-01
3.0293735e-01 6.5037024e-01
3.6748619e-01 9.5786833e-02
6.3976919e-02 5.4947497e-01
3.0293735e-01 6.5037024e-01
4.0645496e-01 8.2958752e-01
4.9066479e-01 4.4410036e-01
3.0293735e-01 6.5037024e-01
3.6748619e-01 9.5786833e-02
4.9244296e-01 2.3488102e-01
4.9244296e-01 2.3488102e-01
4.9066479e-01 4.4410036e-01
4.9066479e-01 4.4410036e-01
7.3082954e-01 5.1825327e-01
1.8829507e+00 1.7053562e-01
4.9244296e-01 2.3488102e-01
4.3133971e-01 9.4062409e-01
8.7230061e-01 2.0371867e+00
4.0645496e-01 8.2958752e-01
4.3133971e-01 9.4062409e-01
6.6251849e-01 6.4842135e-01
4.0645496e-01 8.2958752e-01
6.9696115e-01 6.8938388e-01
8.7230061e-01 2.0371867e+00
7.3082954e-01 5.1825327e-01
6.6251849e-01 6.4842135e-01
1.8829507e+00 1.7053562e-01
7.3082954e-01 5.1825327e-01
6.6251849e-01 6.4842135e-01
6.9696115e-01 6.8938388e-01
-7.9265104e+00 3.6503989e-01
-1.7371176e+01 8.6111447e-02
3.6748619e-01 9.5786833e-02
-6.0998602e-02 -1.3709259e+00
1.8829507e+00 1.7053562e-01
4.4291165e+00 -2.9045575e-01
8.7230061e-01 2.0371867e+00
1.8287612e+00 4.5227847e+00
6.9696115e-01 6.8938388e-01
1.9370861e+00 1.3452721e+00
\end{filecontents*}
\begin{tikzpicture}
\begin{axis}[x=3cm, y=3cm, z=0cm, view={0}{90}]
\addplot3 [color=blue, samples y=0] file {voronoi.dat};
\end{axis}
\end{tikzpicture}
\end{document}
Obrigado pela ajuda!!
Responder1
Você precisa adicionar uma linha vazia entre os segmentos de linha individuais do diagrama de Voronoi para que os segmentos de linha não fiquem conectados.
Digamos que você tenha o seguinte arquivo 'points.dat' contendo as coordenadas dos pontos para os quais deseja desenhar o diagrama de Voronoi:
1 4
4 1
2 6
3 5
4 3
6 2
Então você pode encontrar o diagrama de Voronoi usando Matlab ou Octave assim:
points = dlmread('points.dat');
[vx, vy] = voronoi(points(:,1), points(:,2));
Para gravar isso em um arquivo que pode ser plotado usando PGFPlots, você pode usar
fid = fopen('voronoi.dat', 'w');
fprintf(fid, '%f %f\n%f %f\n\n', [vx(:), vy(:)]');
fclose(fid);
No PGFPlots, você pode criar o gráfico assim:
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis equal image
]
\addplot [only marks, red] table {points.dat};
\addplot [no markers, update limits=false] table {voronoi.dat};
\end{axis}
\end{tikzpicture}
\end{document}