我想绘制如下所示的六边形格子分布。
我想将此数据显示为 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如果您需要更改配色方案。
