【发布时间】:2020-05-28 02:05:31
【问题描述】:
shading faceted 和 shading interp 命令在 MATLAB 和 Octave 中产生不同的图形。
考虑这段代码:
[X, Y] = meshgrid(0:2, 0:2);
Z = magic(3);
figure;
colormap('jet');
subplot(1, 3 ,1);
imagesc(Z);
axis xy
yticklabels({'0', '1', '2'})
yticks(1:3)
xticklabels({'0', '1', '2'})
xticks(1:3)
title('imagesc(Z)');
subplot(1,3,2);
surf(X, Y, Z);
shading faceted;
view([0,0,1]);
yticks(0:3)
xticks(0:3)
title('surf(X, Y, Z); shading faceted;');
subplot(1,3,3);
surf(X, Y, Z);
shading interp;
view([0,0,1]);
yticks(0:3)
xticks(0:3)
title('surf(X, Y, Z); shading interp;');
以及 Octave 生成的结果:
MATLAB 生成一个正确的图形。这个 Octave 图形有什么问题?
我们得到两个不同输出的原因是什么? view 命令有问题吗?
编辑(错误报告后)
已为 Ocatve 6.1 修复:https://hg.savannah.gnu.org/hgweb/octave/raw-file/11072ea6a16c/scripts/plot/appearance/view.m
【问题讨论】:
-
请注意,八度音程中的最后 2 个图将
y轴倒置。我怀疑这有很大的不同。也许八度音程也会以某种方式置换输入 -
与@Ander 的评论一致:Octave 中的
view([0, 0, -1])似乎产生了与 MATLAB 版本相当的输出。 -
@HansHirse
view([0, 0, -1])不会产生相同的结果。 -
@sci9 我又看了一遍,你是对的!完全不设置
view表明情节本身具有可比性,因此view问题可能需要以不同方式解决……不过,安德的评论仍然有效。 -
是
y轴倒置了,还是x和y轴互换了?再看颜色排列。我打了一个xlabel('X axis')电话来澄清这一点,看起来在 Octave 中,X 轴最终位于垂直轴而不是水平轴上。
标签: matlab plot graphics gnuplot octave