4

我正在运行 Octave 3.4.0 并想创建一个透明的曲面图。facealpha但是,在弄乱、和时edgealpha,我无法这样做。alphadataalphadatamapping

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

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 版本中的错误,还是我错过了什么?

在此处输入图像描述

4

3 回答 3

3

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

不过要注意两点:

  1. 在表面后面的对角线部分没有用打火机绘制,所以看起来仍然很奇怪;
  2. 使用新的实验性 fltk 图形工具包,它根本不起作用。
于 2012-08-22T14:13:04.623 回答
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 只是让 surf 的颜色变浅。然而,一种解决方法是mesh八度音程中的命令具有丢弃面部的功能:(hidden手动

所以

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')

生产

代码输出

于 2014-06-11T21:53:57.140 回答
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:

透明冲浪

于 2019-08-28T20:50:50.563 回答