Skip to main content
 首页 » 编程设计

python之倾斜轴 2D 图,其中 x y 轴成 60 度而不是 90 度

2025年05月04日8zfyouxi

我想绘制如下所示的六边形格子分布。

我想将此数据显示为 2D 颜色图或条形图。有谁知道如何做到这一点?我熟悉 octave、python、gnuplot、excel、matlab。

                 1  1  1  1  1  1  1  1 
               2   2  2  2  2  2  2  2  2 
            3    3   3  3  3  3  3  3  3   3 
              2   2   2  2  2  2  2  2  2 
                1   1  1  1  1  1  1  1 

请您参考如下方法:

这是一个使用 patch 的解决方案在 MATLAB 中。

data = cellfun(@(x) textscan(x, '%f')', importdata('data.txt', sprintf('\n'))); 
rowLen = cellfun(@numel, data); 
nPoints = sum(rowLen); 
 
centerCells = arrayfun(@(l,r) [(-l+1:2:l-1)'*sin(pi/3) -r*1.5*ones(l,1)], ... 
    rowLen', 1:numel(rowLen), 'UniformOutput', false); 
centers = vertcat(centerCells{:}); 
 
hx = linspace(0,2*pi,7)';  
vertices = reshape(... 
            bsxfun(@plus, permute(sin([hx pi/2+hx]), [1 3 2]), ... 
                          permute(centers, [3 1 2])), 7 * nPoints, 2); 
faces = reshape(1:7*nPoints, 7, nPoints)'; 
colorData = vertcat(data{:}); 
 
patch('Vertices', vertices, 'Faces', faces, ... 
    'FaceColor', 'flat', 'FaceVertexCData', colorData);  
axis equal 

这会产生

阅读documentation如果您需要更改配色方案。