在 Maxima 中显示 3D 函数的有组织的自顶向下视图
Showing an organised top down view of a 3D function in Maxima
我在数学网站上问过,被告知要在这里问。
我正在尝试使用 Maxima 显示 3D 函数的自上而下视图,函数的不同值 (height/depth) 将使用 Maxima 的颜色范围和颜色条显示自动提供。
使用 this website 我能够为函数的自上而下视图组合一些代码(我决定省略之前的代码,因为它只是 load(draw)$ 和函数本身):
wxdraw3d(
enhanced3d=true, explicit(f(y,x,15,400,1),y,0,100,x,20,30),
xu_grid=100, yv_grid=100,
xyplane=0,
view=[0,0],
zrange=[0,50],
zlabel="Gap distance (m)",
xlabel="Gap number",
ylabel="Initial velocity (ms^{-1})",
title="f(n,u,15,400,1)"
);
给出以下情节:
如您所见,情节存在几个问题:
- 彩条没有标签,会使用当前的z-label
- 垂直轴(标签、数字和细分)应在左侧
- 横轴的细分应该在底部
- 地块上的所有细分都应出现在上方而不是下方
- 应调整边框大小,以确保没有任何内容被切断或重叠(指的是输出周围的黑色边框,图像是边框内部的裁剪)
我尝试了 this website 中的另一种方法,使用最底部的 gnuplot 代码给出了修改后的代码:
plot3d(
f(x,y,15,400,1),[x,0,100],[y,20,30],
[elevation,0],
[grid,100,100],
[zlabel,"Gap length (m)"],
[xlabel,"Gap number"],
[ylabel,"Initial velocity (ms^{-1})"],
[gnuplot_preamble,"set view map; unset surface"],
[gnuplot_pm3d,true]
);
然而,这并没有起到作用,因为它给出了 this plot。如您所见,这比第一个情节有更多问题。不仅不如第一个图清晰,和网站上的图几乎没有相似之处,信息少,没有颜色条,没有编号的轴,烦人的网格,甚至颜色渐变更糟糕。
对于我使用的第一个代码,我找不到任何关于标记颜色条的信息,只有范围、颜色本身以及它是打开还是关闭;而且我找不到关于边框大小或轴标签定位等的任何信息。因此,尝试使用此代码毫无意义,尤其是当我获得第一个代码以正常工作时。根据地块的大小,我尝试了 wxplot_size[],但出现错误“绘制:未知选项 [600,400]”,它似乎四舍五入到最接近的百位。
有什么方法可以修改第一个代码,使颜色条被标记,垂直轴标记在另一边,每个轴的小细分出现在图上,图外没有任何东西切断或重叠?如果不可能将细分移动到地块上方,是否有办法删除它们?我对 Maxima 或 gnuplot 了解不多。
除了这些问题之外,其他一切似乎都很好,我不完全确定还有什么地方可以询问 Maxima。
让我们修改wxdraw3d
命令。
Maxima 写了一个 gnuplot 输入文件,之后由 gnuplot 加载,所以你可以检查 maxima 命令的影响。在我的系统 (Debian linux) 上,该文件位于我的主目录中,名称类似于“~/maxout_28503.gnuplot”。
大部分问题可以用gnuplot命令set view map
代替set view 0,0
解决,对应maxima命令view=map
代替view=[0,0]
.
我还没有找到设置颜色框标签的“好”方法。我认为有一个最大的方法,因为默认情况下生成的 gnuplot 文件包含行 set cblabel ''
生成一个空标签。但是我们可以使用该机制来应用任何 gnuplot 设置:user_preamble= ...
.
所以现在我们有以下内容:
wxdraw3d(
user_preamble="set cblabel 'Gap distance (m)' offset screen 0.01, 0;",
view=map,
enhanced3d=true,
title="f(n,u,15,400,1)",
xlabel="Gap number",
ylabel="Initial velocity (ms^{-1})",
zlabel="",
explicit(x^2+y^2,x,-2,2,y,-2,2)
);
user_preamble=
中编写的命令似乎是在实际 gnuplot splot
命令之前执行的。因此,他们可以覆盖以前的设置。
命令set cblabel
设置颜色框的标签。我添加了一个小的偏移量以避免标签太近。
我懒得理解你的功能:)所以我再画一个。
这是结果:
更新以改进您评论中的图片
Gnuplot 有时会在估计文本大小方面出现问题。这会导致丑陋的图表。您可以通过手动调整偏移量和大小来改进输出。
命令set size
更改整个图像中绘图的区域。这可用于为右侧的颜色框标签制作一些 space。 set ylabel
命令接受 offset
。我们将这两个命令放入 user_preamble
部分 wxdraw3d
:
wxdraw3d(
user_preamble=[
"set cblabel 'Gap distance (m)' offset screen 0.01, 0",
"set ylabel offset screen -0.01,0",
"set size 0.9,1"
],
view=map,
enhanced3d=true,
...
);
尝试所有的偏移量和大小数字,直到它们适合。
我在数学网站上问过,被告知要在这里问。
我正在尝试使用 Maxima 显示 3D 函数的自上而下视图,函数的不同值 (height/depth) 将使用 Maxima 的颜色范围和颜色条显示自动提供。
使用 this website 我能够为函数的自上而下视图组合一些代码(我决定省略之前的代码,因为它只是 load(draw)$ 和函数本身):
wxdraw3d(
enhanced3d=true, explicit(f(y,x,15,400,1),y,0,100,x,20,30),
xu_grid=100, yv_grid=100,
xyplane=0,
view=[0,0],
zrange=[0,50],
zlabel="Gap distance (m)",
xlabel="Gap number",
ylabel="Initial velocity (ms^{-1})",
title="f(n,u,15,400,1)"
);
给出以下情节:
如您所见,情节存在几个问题:
- 彩条没有标签,会使用当前的z-label
- 垂直轴(标签、数字和细分)应在左侧
- 横轴的细分应该在底部
- 地块上的所有细分都应出现在上方而不是下方
- 应调整边框大小,以确保没有任何内容被切断或重叠(指的是输出周围的黑色边框,图像是边框内部的裁剪)
我尝试了 this website 中的另一种方法,使用最底部的 gnuplot 代码给出了修改后的代码:
plot3d(
f(x,y,15,400,1),[x,0,100],[y,20,30],
[elevation,0],
[grid,100,100],
[zlabel,"Gap length (m)"],
[xlabel,"Gap number"],
[ylabel,"Initial velocity (ms^{-1})"],
[gnuplot_preamble,"set view map; unset surface"],
[gnuplot_pm3d,true]
);
然而,这并没有起到作用,因为它给出了 this plot。如您所见,这比第一个情节有更多问题。不仅不如第一个图清晰,和网站上的图几乎没有相似之处,信息少,没有颜色条,没有编号的轴,烦人的网格,甚至颜色渐变更糟糕。
对于我使用的第一个代码,我找不到任何关于标记颜色条的信息,只有范围、颜色本身以及它是打开还是关闭;而且我找不到关于边框大小或轴标签定位等的任何信息。因此,尝试使用此代码毫无意义,尤其是当我获得第一个代码以正常工作时。根据地块的大小,我尝试了 wxplot_size[],但出现错误“绘制:未知选项 [600,400]”,它似乎四舍五入到最接近的百位。
有什么方法可以修改第一个代码,使颜色条被标记,垂直轴标记在另一边,每个轴的小细分出现在图上,图外没有任何东西切断或重叠?如果不可能将细分移动到地块上方,是否有办法删除它们?我对 Maxima 或 gnuplot 了解不多。
除了这些问题之外,其他一切似乎都很好,我不完全确定还有什么地方可以询问 Maxima。
让我们修改wxdraw3d
命令。
Maxima 写了一个 gnuplot 输入文件,之后由 gnuplot 加载,所以你可以检查 maxima 命令的影响。在我的系统 (Debian linux) 上,该文件位于我的主目录中,名称类似于“~/maxout_28503.gnuplot”。
大部分问题可以用gnuplot命令set view map
代替set view 0,0
解决,对应maxima命令view=map
代替view=[0,0]
.
我还没有找到设置颜色框标签的“好”方法。我认为有一个最大的方法,因为默认情况下生成的 gnuplot 文件包含行 set cblabel ''
生成一个空标签。但是我们可以使用该机制来应用任何 gnuplot 设置:user_preamble= ...
.
所以现在我们有以下内容:
wxdraw3d(
user_preamble="set cblabel 'Gap distance (m)' offset screen 0.01, 0;",
view=map,
enhanced3d=true,
title="f(n,u,15,400,1)",
xlabel="Gap number",
ylabel="Initial velocity (ms^{-1})",
zlabel="",
explicit(x^2+y^2,x,-2,2,y,-2,2)
);
user_preamble=
中编写的命令似乎是在实际 gnuplot splot
命令之前执行的。因此,他们可以覆盖以前的设置。
命令set cblabel
设置颜色框的标签。我添加了一个小的偏移量以避免标签太近。
我懒得理解你的功能:)所以我再画一个。
这是结果:
更新以改进您评论中的图片
Gnuplot 有时会在估计文本大小方面出现问题。这会导致丑陋的图表。您可以通过手动调整偏移量和大小来改进输出。
命令set size
更改整个图像中绘图的区域。这可用于为右侧的颜色框标签制作一些 space。 set ylabel
命令接受 offset
。我们将这两个命令放入 user_preamble
部分 wxdraw3d
:
wxdraw3d(
user_preamble=[
"set cblabel 'Gap distance (m)' offset screen 0.01, 0",
"set ylabel offset screen -0.01,0",
"set size 0.9,1"
],
view=map,
enhanced3d=true,
...
);
尝试所有的偏移量和大小数字,直到它们适合。