我正在运行Octave 3.4.0并希望创建一个透明的曲面图。但是,在弄乱facealpha
,edgealpha
,alphadata
和alphadatamapping
时,我无法这样做。
创建不透明表面的示例代码:
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版本中的错误,还是我错过了什么?
答案 0 :(得分:3)
这适用于Octave 3.6.2,使用gnuplot作为图形工具包。所以你最好升级你的Octave安装。
但有两点需要注意:
答案 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
命令具有丢弃面部的功能:hidden
(manual)。
所以
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')
生成
答案 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: