gpt4 book ai didi

matlab - 3D直方图和条件着色

转载 作者:太空宇宙 更新时间:2023-11-03 20:33:30 25 4
gpt4 key购买 nike

我有一系列有序点(X、Y、Z),我想绘制 3D 直方图,有什么建议吗?

我正在尝试通过本教程来做到这一点 http://www.mathworks.com/help/stats/hist3.html ,但这里的点是随机的,并作为函数呈现。我的示例更简单,因为我已经知道要点。

此外,根据 Z 坐标的数值,我想给它涂上不同的颜色。例如。最大值 - 绿色,最小值 - 红色。与本例相似 Conditional coloring of histogram graph in MATLAB , 仅在 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]

你能帮我编写带有条件着色的 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;

现在我只需清除线条并设计图表,使其看起来很有用。但是如何在 0 层上制作一个没有整个网格的 bar3 呢?

最佳答案

Based on this answer ,您需要做的就是重新排列您的数据以匹配该答案的 Z 格式。之后您可能需要移除边缘线并可能清除零高度条。

% Step 1: rearrange your data
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'));

% Step 2: Use the code from the link to plot the 3D histogram
figure;
h = bar3(A); % get handle to graphics

set(h,'edgecolor','none'); % Hopefully this will remove the lines (from https://www.mathworks.com/matlabcentral/newsreader/view_thread/281581)

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

nz(nz==0) = NaN; % This bit makes all the zero height bars have no colour

set(h(k),'CData', nz); % set the new colors. Note in later versions you can do h(k).CData = nz
end

colorbar;

enter image description here

关于matlab - 3D直方图和条件着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37587091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com