在matlab中控制单个表面的阴影而不影响其他表面。 FaceColor

时间:2015-08-25 19:39:04

标签: matlab plot surface

我浏览了这个网站而没有找到类似的问题(尽管有类似的标题)。我的问题如下。创建一个绘制大黑色补丁的函数deleteme:

function h = deleteme()

h = surf([0 0; 50 50], [0 50;0 50], [20 20; 20 20], 'FaceColor', [0 0 0]);

end

现在运行一个使用此功能的脚本以及任何其他表面创建功能。

close all; clear all; clc;
myfig = figure;
hold all
deleteme();
surf(peaks)
colormap(hot(128))
shading interp
hold off

现在补丁不再是黑色,它是白色的,因为阴影interp影响它并将其颜色分配给colormap。问题是,我无法找到一种方法来插入峰值(使其看起来更好)并保持补丁黑色除外:

  • 稍后在色彩映射

  • 后调用黑色色块
  • 使用colormap和caxis等

我的问题是:你能修改函数deleteme来防止这种行为并保持它绘制的内容吗?或者你可以轻松地修改冲浪(峰值)的呼叫以仅仅峰值而不是其余的峰值?我正在寻找一种解决方案,使deleteme功能易于使用,而不依赖于每个情节中的Matlab奥术色彩图。当然,删除只是一个更大的功能......

谢谢!

1 个答案:

答案 0 :(得分:0)

好吧,我在修改deleteme函数时失败了,实际上在阴影插入后将窗格保持为黑色。这实际上是一种阴影行为 - 它可能会限制它的影响。

然而我意识到'interp'实际上是'FaceColor'的一个可能的参数 - 我从未使用它。因此临时修复(直到我可以真正将补丁与调用阴影隔离)是将所有曲面设置为阴影interp的手动版本,如下所示:

surf(peaks, 'EdgeAlpha', 0, 'FaceColor', 'interp')

如果有人想提出自己的想法,我会暂时搁置这个问题。我仍然想知道如何将matlab对象与阴影,alpha等函数隔离开来。