
pgfplots를 사용하여 보로노이 다이어그램을 그리고 싶지만 슬프게도 원하는 대로 그릴 수 없습니다. Matlab 명령을 사용하여 x 및 y 좌표를 가져와 dat 파일로 저장했습니다. 해당 파일에서 첫 번째 열에 x 좌표를 저장하고 두 번째 열에 y 좌표를 저장했습니다.
누구든지 아이디어가 있나요? 어떻게 작동할까요?
코드의 최소 예:
\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}
당신의 도움을 주셔서 감사합니다!!
답변1
선분이 연결되지 않도록 보로노이 다이어그램의 개별 선분 사이에 빈 선을 추가해야 합니다.
보로노이 다이어그램을 그리려는 점의 좌표가 포함된 다음 파일 'points.dat'가 있다고 가정해 보겠습니다.
1 4
4 1
2 6
3 5
4 3
6 2
그런 다음 Matlab 또는 Octave를 사용하여 Voronoi 다이어그램을 찾을 수 있습니다.
points = dlmread('points.dat');
[vx, vy] = voronoi(points(:,1), points(:,2));
PGFPlots를 사용하여 플롯할 수 있는 파일에 이를 쓰려면 다음을 사용할 수 있습니다.
fid = fopen('voronoi.dat', 'w');
fprintf(fid, '%f %f\n%f %f\n\n', [vx(:), vy(:)]');
fclose(fid);
PGFPlots에서는 다음과 같은 플롯을 만들 수 있습니다.
\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}