x 和 y 轴在 GNU Octave 的 scatter3 图中互换
x and y axis interchanged in scatter3 plot in GNU Octave
假设我想使用 GNU Octave 的 scatter3
函数绘制 f(x,y,z) = x^2
。
我的密码是
x = [1,2,3,4];
y = [1,2,3,4,5];
z = [1,2,3,4,5,6];
for xi = 1:4
for yi = 1:5
for zi = 1:6
a(xi,yi,zi) = x(xi) * x(xi);
endfor
endfor
endfor
[xx yy zz] = meshgrid(x,y,z);
scatter3(xx(:), yy(:), zz(:), [], a(:),'fill');
xlabel('x')
ylabel('y')
zlabel('z')
colormap(rainbow)
colorbar()
我得到上面的图,它表明函数随 y
变化(实际上是 y^2
),并且是一个常数 w.r.t。 x
。难道我做错了什么?由于 a(xi,yi,zi) = x(xi) * x(xi)
,我不应该得到 a = x^2
,因为索引 xi
?
三个轴我都标注了
我在 Ubuntu 18.04 中使用 Octave 4.2.2。
交换函数矩阵中的 x
和 y
轴。
a(yi,xi,zi) = x(xi) * x(xi);
由于 meshgrids
在散点图中的工作方式,这是必要的。在您的例子中,x
和 y
轴翻转为 Octave。您需要在绘制之前翻转它们以获得预期的输出。
The surface mesh is plotted using shaded rectangles. The vertices of the rectangles [x, y] are typically the output of meshgrid. over a 2-D rectangular region in the x-y plane. z determines the height above the plane of each vertex. If only a single z matrix is given, then it is plotted over the meshgrid x = 1:columns (z), y = 1:rows (z). Thus, columns of z correspond to different x values and rows of z correspond to different y values.
(故意突出显示斜体的文本)
假设我想使用 GNU Octave 的 scatter3
函数绘制 f(x,y,z) = x^2
。
我的密码是
x = [1,2,3,4];
y = [1,2,3,4,5];
z = [1,2,3,4,5,6];
for xi = 1:4
for yi = 1:5
for zi = 1:6
a(xi,yi,zi) = x(xi) * x(xi);
endfor
endfor
endfor
[xx yy zz] = meshgrid(x,y,z);
scatter3(xx(:), yy(:), zz(:), [], a(:),'fill');
xlabel('x')
ylabel('y')
zlabel('z')
colormap(rainbow)
colorbar()
y
变化(实际上是 y^2
),并且是一个常数 w.r.t。 x
。难道我做错了什么?由于 a(xi,yi,zi) = x(xi) * x(xi)
,我不应该得到 a = x^2
,因为索引 xi
?
三个轴我都标注了
我在 Ubuntu 18.04 中使用 Octave 4.2.2。
交换函数矩阵中的 x
和 y
轴。
a(yi,xi,zi) = x(xi) * x(xi);
由于 meshgrids
在散点图中的工作方式,这是必要的。在您的例子中,x
和 y
轴翻转为 Octave。您需要在绘制之前翻转它们以获得预期的输出。
The surface mesh is plotted using shaded rectangles. The vertices of the rectangles [x, y] are typically the output of meshgrid. over a 2-D rectangular region in the x-y plane. z determines the height above the plane of each vertex. If only a single z matrix is given, then it is plotted over the meshgrid x = 1:columns (z), y = 1:rows (z). Thus, columns of z correspond to different x values and rows of z correspond to different y values.
(故意突出显示斜体的文本)