我有一系列有序的点(X,Y,Z),我想绘制一个三维直方图,请问有什么建议吗?
我正在尝试按照这篇教程http://www.mathworks.com/help/stats/hist3.html进行操作,但这里的点是随机的并且以函数的形式呈现。我的例子更简单,因为我已经知道这些点。
此外,根据Z坐标的数值大小,我希望能以不同的颜色进行着色。例如,最大值-绿色,最小值-红色。与此类似的情况可以参考这个链接在MATLAB中对直方图图表进行条件着色,只是这里是三维。
因此,如果我有一系列点:
我正在尝试按照这篇教程http://www.mathworks.com/help/stats/hist3.html进行操作,但这里的点是随机的并且以函数的形式呈现。我的例子更简单,因为我已经知道这些点。
此外,根据Z坐标的数值大小,我希望能以不同的颜色进行着色。例如,最大值-绿色,最小值-红色。与此类似的情况可以参考这个链接在MATLAB中对直方图图表进行条件着色,只是这里是三维。
因此,如果我有一系列点:
X = [32 64 32 12 56 76 65]
Y = [160 80 70 48 90 80 70]
Z = [80 70 90 20 45 60 12]
您能帮我处理一下3D直方图与条件着色的代码吗?
目前代码如下:
X = [32 64 32 12 56 76 65];
Y= [160 80 70 48 90 80 70];
Z= [80 70 90 20 45 60 12];
A = full( sparse(X',Y',Z'));
figure;
h = bar3(A); % get handle to graphics
for k=1:numel(h),
z=get(h(k),'ZData'); % old data - need for its NaN pattern
nn = isnan(z);
nz = kron( A(:,k),ones(6,4) ); % map color to height 6 faces per data point
nz(nn) = NaN; % used saved NaN pattern for transparent faces
set(h(k),'CData', nz); % set the new colors
end
colorbar;
现在我只需要清除线条并设计图表,使其看起来有用。但是如何制作一根bar3,而不需要整个网格都在0级上?
Z
:Z = full(spares(X',Y',Z'))
,然后您只需要想办法清除边缘线即可。 - Dan