在 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)"
);

给出以下情节:

如您所见,情节存在几个问题:

我尝试了 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,
    ...
);

尝试所有的偏移量和大小数字,直到它们适合。