在Octave上设置曲面图的透明度

时间:2012-08-22 11:47:33

标签: octave

我正在运行Octave 3.4.0并希望创建一个透明的曲面图。但是,在弄乱facealphaedgealphaalphadataalphadatamapping时,我无法这样做。

创建不透明表面的示例代码:

p = peaks(40);
f1 = figure(10);clf
s1 = surface(p)
view(3)
xlabel('x');ylabel('y');
hold on;plot3([0 40],[40 0],[-10 10],'k')
set(s1,'edgecolor','none')
set(s1,'facealpha',0.2)

下图中给出的结果。正如您所看到的,即使表面被认为是半透明的,在开始时诊断绘制的线也隐藏在表面后面。这是我的Octave版本中的错误,还是我错过了什么?

enter image description here

3 个答案:

答案 0 :(得分:3)

这适用于Octave 3.6.2,使用gnuplot作为图形工具包。所以你最好升级你的Octave安装。

但有两点需要注意:

  1. 在表面后面的对角线部分没有用打火机绘制,所以看起来仍然很奇怪;
  2. 使用新的实验性fltk图形工具包,它根本不起作用。

答案 1 :(得分:3)

我同意Vidar:他的代码不适用于最新的Octave 3.8.1(Cygwin 1.7.30(0.272 / 5/3)setup_x86_64.exe:2.850 xterm 305-1 Gnuplot 4.6.3-3)。 facealpha只是使浅色的冲浪。然而,一种解决方法是八度音阶中的mesh命令具有丢弃面部的功能:hiddenmanual)。

所以

p = peaks(40);
f1 = figure(10);clf
s1 = mesh(p)
view(3)
xlabel('x');ylabel('y');
hold on;plot3([0 40],[40 0],[-10 10],'k')
hidden('off')

生成

code output

答案 2 :(得分:1)

这实际上在Octave 5.1.0中对我有用,但是命令的顺序很重要。您需要在绘制线条之前设置Alpha。单独尝试一下表面并使用Alpha-它可以工作:

>> s1 = surface(p)
s1 = -2.7876
>> view(3)
>> set(s1,'facealpha',0.5)
>> colormap jet
>> grid on; % so you can see the grid through the transparent surface:

Surf with transparency