你好同学,绘制蜂窝的matlab代码,供参考:
function hex_honeycomb(width)
%hex_honenycomb This function plots a hexagonal honeycomb structure and allows to plot
%heatmap for each individual hexagonal segment for a given data set
%the first segment starts at the bottom of the left most column and goes up
%to a given height and starts back down at the following column and repeats
w_check = false;
while w_check == false
if mod(width,2) == 0 || width < 3
width = input("Error. Please enter an odd value greater than 3: ");
else
w_check = true;
end
end
segment_height = 10;
height=ceil(width/2);
horz_delta = (segment_height/2)/sqrt(3);
vert_delta = segment_height/2;
x_centers = zeros(width,1);
x_centers(1) = 2*horz_delta;
for i=2:width
x_centers(i) = x_centers(i-1)+3*horz_delta;
end
ycenters_odd = zeros(width-1,1);
ycenters_even = zeros(width,1);
ycenters_even(1) = segment_height/2;
ycenters_odd(1) = segment_height;
for i=2:width
ycenters_odd(i) = ycenters_odd(i-1)+segment_height;
ycenters_even(i) = ycenters_even(i-1)+segment_height;
end
if width==3
offset=zeros(width,1);
elseif mod(width,4)==1
offset= zeros(width,1);
offset(height)=0;
j=1;
for i=1:0.5:height/2
offset(height-j) = floor(i);
offset(height+j) = floor(i);
j=j+1;
end
else
offset= zeros(width,1);
offset(height-1:height+1,:)=0;
j=2;
for i=1:0.505:height/2
offset(height-j) = floor(i);
offset(height+j) = floor(i);
j=j+1;
end
end
height_check = false;
face=1:6;
segment = 1;
for i=1:width
for k = 1:height
if mod(i,2) == true
xy_seg = [x_centers(i)-horz_delta ycenters_odd(k+offset(i))-vert_delta;
x_centers(i)+horz_delta ycenters_odd(k+offset(i))-vert_delta;
x_centers(i)+2*horz_delta ycenters_odd(k+offset(i));
x_centers(i)+horz_delta ycenters_odd(k+offset(i))+vert_delta;
x_centers(i)-horz_delta ycenters_odd(k+offset(i))+vert_delta;
x_centers(i)-2*horz_delta ycenters_odd(k+offset(i));];
else
xy_seg = [x_centers(i)-horz_delta ycenters_even(k+offset(i))-vert_delta;
x_centers(i)+horz_delta ycenters_even(k+offset(i))-vert_delta;
x_centers(i)+2*horz_delta ycenters_even(k+offset(i));
x_centers(i)+horz_delta ycenters_even(k+offset(i))+vert_delta;
x_centers(i)-horz_delta ycenters_even(k+offset(i))+vert_delta;
x_centers(i)-2*horz_delta ycenters_even(k+offset(i));];
end
patch('Faces',face,'Vertices',xy_seg,'FaceVertexCData',segment,'EdgeColor','black','FaceColor','flat','LineWidth',2);
segment = segment+1;
end
if height_check == false
height=height+1;
else
height = height-1;
end
if height == width+1
height = width-1;
height_check = true;
end
end
colormap(jet)
axis equal
axis off
fig = gcf;
fig.WindowState = 'maximized';
fig.ToolBar = 'none';
end
运行示例:
hex_honeycomb(11) % 注意输入奇数
这种MATLAB画图的资源还是很多的,自己去学习一下吧