如何在3D轴上绘制2D Voronoi网格?

时间:2015-12-03 08:33:56

标签: matlab plot

我有一个简单的函数来绘制Voronoi图,这在绘制2D轴时效果很好。但是,当我在3D轴上的平面上绘制2D网格时,它会溢出。

Nice 2D Hexagonal grid

Overflowing 3D Hexagonal grid

以下是代码:

function plotHexGrid(X, Y, m, n)

  f1 = figure       
  [XV YV] = voronoi(X(:),Y(:)); 
  plot(XV,YV,'b-');
  axis([1 m 1 n])

  f2 = figure     
  Z = ones(size(XV));
  plot3(XV,YV,Z,'b-');
  axis([1 m 1 n 0 10])    

  saveas(f1,'hexgrid2D.jpg');
  saveas(f2,'hexgrid3D.jpg');
end

所以我想让网格只显示在轴边界内并隐藏溢出。我无法使用Google找到任何解决方案,所以我只尝试了以下内容,但没有成功:

xlim([1, n]);
ylim([1, m]);

更新:

我有以下X,Y,m和n值:

X = [0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487;
0    3.4641    6.9282   10.3923   13.8564   17.3205   20.7846   24.2487];

Y =  [0     2     0     2     0     2     0     2;
4     6     4     6     4     6     4     6;
8    10     8    10     8    10     8    10;
12    14    12    14    12    14    12    14;
16    18    16    18    16    18    16    18;
20    22    20    22    20    22    20    22;
24    26    24    26    24    26    24    26;
28    30    28    30    28    30    28    30];

m = 20;
n = 20;

1 个答案:

答案 0 :(得分:2)

即使没有xlimylim位,提供的代码也可以在Mac R2014b上正常运行。您可能希望在与您的系统/版本不同的系统/版本上进行尝试。看起来像某种图形错误......或者,您可以将其报告给TheMathWorks。

您可能还想旋转二维图形以获得图表的三维版本(使用rotate或鼠标)。