从冲浪图中排除值
Excluding values from surf plot
假设我们有一个这样的 surf
情节:
A = round(peaks,0);
surf(A)
有没有办法修改颜色图,使其排除 A
中等于 0
的所有值,就好像它们是 NaN
?
在不影响色图其余部分的情况下将 0
着色为白色是另一种可接受的解决方案。
您提到了解决方案:将所有 0
设置为 nan
:
A = round(peaks, 0);
A(A==0)=nan; % in-place logical mask on zero entries
surf(A)
% The same, but with a temporary variable, thus not modifying A
B = A;
B(B==0) = nan;
surf(B)
(R2007a) 中的结果:
如果您不想修改 A
或使用临时变量,您需要在色图中“切一个洞”
A = round(peaks);
unique_vals = unique(A); % Get the unique values
cmap = jet(numel(unique_vals)); % Set-up your colour map
zero_idx = find(unique_vals==0); % find 0 index
cmap(zero_idx,:) = 1; % all ones = white. Nan would make it black
surf(A, 'EdgeColor', 'none')
colormap(cmap) % Use our colour map with hole
注意:'EdgeColor', 'none'
对用于删除每个补丁的边缘,这样您就不会看到值为 0 的“网格”。
假设我们有一个这样的 surf
情节:
A = round(peaks,0);
surf(A)
有没有办法修改颜色图,使其排除 A
中等于 0
的所有值,就好像它们是 NaN
?
在不影响色图其余部分的情况下将 0
着色为白色是另一种可接受的解决方案。
您提到了解决方案:将所有 0
设置为 nan
:
A = round(peaks, 0);
A(A==0)=nan; % in-place logical mask on zero entries
surf(A)
% The same, but with a temporary variable, thus not modifying A
B = A;
B(B==0) = nan;
surf(B)
(R2007a) 中的结果:
如果您不想修改 A
或使用临时变量,您需要在色图中“切一个洞”
A = round(peaks);
unique_vals = unique(A); % Get the unique values
cmap = jet(numel(unique_vals)); % Set-up your colour map
zero_idx = find(unique_vals==0); % find 0 index
cmap(zero_idx,:) = 1; % all ones = white. Nan would make it black
surf(A, 'EdgeColor', 'none')
colormap(cmap) % Use our colour map with hole
注意:'EdgeColor', 'none'
对用于删除每个补丁的边缘,这样您就不会看到值为 0 的“网格”。