Plot 显示Maxima中3D功能的有序自上而下视图

Plot 显示Maxima中3D功能的有序自上而下视图,plot,3d,gnuplot,maxima,Plot,3d,Gnuplot,Maxima,我在数学网站上问过,有人告诉我在这里问这个问题 我试图使用Maxima显示3D函数的自上而下视图,函数的不同值(高度/深度)将使用Maxima自动提供的一系列颜色和颜色栏显示 使用,我能够为函数的自顶向下视图(我决定省去之前的代码,因为它只是load(draw)$和函数本身)组合一些代码: 它给出了以下曲线图: 正如您所看到的,绘图有几个问题: 颜色栏没有标签,这将使用当前的z标签 垂直轴(标签、编号和细分)应位于左侧 水平轴的细分应在底部 绘图上的所有细分都应显示在上方,而不是下方 边框应

我在数学网站上问过,有人告诉我在这里问这个问题

我试图使用Maxima显示3D函数的自上而下视图,函数的不同值(高度/深度)将使用Maxima自动提供的一系列颜色和颜色栏显示

使用,我能够为函数的自顶向下视图(我决定省去之前的代码,因为它只是load(draw)$和函数本身)组合一些代码:

它给出了以下曲线图:

正如您所看到的,绘图有几个问题:

  • 颜色栏没有标签,这将使用当前的z标签
  • 垂直轴(标签、编号和细分)应位于左侧
  • 水平轴的细分应在底部
  • 绘图上的所有细分都应显示在上方,而不是下方
  • 边框应调整大小,以便没有任何内容被截断或重叠(指输出周围的黑色边框,图像是边框内的一个裁剪)
我尝试了另一种方法,在最底层使用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]
);
然而,这并没有起到应有的作用。正如你所看到的,这比第一个情节有更多的问题。它不仅没有第一个图那么清晰,而且几乎与网站上的图相似,信息更少,没有颜色条,没有编号的轴,令人讨厌的网格,甚至颜色梯度也更差

对于我使用的第一个代码,我找不到任何关于标记颜色栏的信息,只有范围、颜色本身以及它是开还是关;我找不到任何关于轴标签的边框大小或位置等的信息,所以尝试使用这段代码是没有意义的,尤其是如果我第一段代码能够正常工作的话。对于绘图的大小,我尝试了wxplot_size[],但出现了错误“draw:unknown option[600400]”,它似乎四舍五入到了最接近的100

是否有任何方法修改第一个代码,使色条标记,垂直轴标记在另一侧,每个轴的小细分显示在绘图上,绘图外没有任何东西被切断或重叠?如果无法将细分移动到绘图上方,是否仍有删除它们的方法?我对Maxima或gnuplot了解不多


除了这些问题,其他一切似乎都很好,我不完全确定还有什么地方可以询问Maxima。

让我们修改
wxdraw3d
命令

Maxima编写一个gnuplot输入文件,然后由gnuplot加载,因此您可以检查Maxima命令的影响。在我的系统(Debian linux)上,该文件位于我的主目录中,名称类似“~/maxout\u 28503.gnuplot”

大多数问题都可以通过使用gnuplot命令
set view map
而不是
set view 0,0
来解决,它对应于maxima命令
view=map
而不是
view=[0,0]

我还没有找到一个“好”的方法来设置颜色框的标签。我认为有一种最大化的方法,因为默认情况下,生成的gnuplot文件包含生成空标签的行
set cblabel'
。但是我们可以使用该机制应用任何gnuplot设置:
user\u 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\u preamble=
中编写的命令似乎是在实际gnuplot
splot
命令之前执行的。因此,它们可以覆盖以前的设置

命令
set cblabel
设置颜色框的标签。我添加了一个小偏移量,以避免标签太近

我懒得理解你的函数:),所以我画了另一个

结果是:


更新以改进您评论中的图片

Gnuplot有时在估计文本大小方面存在问题。这可能会导致丑陋的图表。可以通过手动调整偏移和大小来改进输出

命令
set size
更改完整图像中的绘图区域。这可用于为右侧的colorbox标签留出一些空间。
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,
    ...
);

玩所有的偏移量和尺寸数字,直到它们合适为止。

我真的没有答案给你。我用
等高线图做了一些实验,到目前为止,我得到的最接近的是
等高线图(,[u,-4,4],[v,-4,4],[legend,false],[xlabel,“My X label”],[ylabel,“My Y label”],[gnuplot_序言,“set pm3d”])没有颜色栏,可能还有其他你想要的东西。你可以试试Maxima邮件列表来获得更多的想法。看:实际上,你的3D功能是什么?你能解释一下f(x,y,15400,1),[x,0100],[y,20,30]
?你使用哪个gnuplot版本?至于gnuplot,我实际上昨天刚刚更新了它,因为我不确定我使用的是哪个版本,所以我更新到了5.4.1,这是我在这些屏幕快照中使用的版本。就变量而言,函数是ut+(t²(v²-u²)(n-½))/(2l)。X是n个变量,将有不同的图形,每个图形使用不同的变量作为y,因此我使用的示例将u作为y。@RobertDodier,我尝试了添加z范围和颜色栏范围(否则将无法工作),并得到以下错误消息:“来自maxima的stderr流的消息:警告:字体初始化缓慢Qt_processTermEvent收到GE_fontprops事件。这本不应该发生[“C:/Users/harry/maxout6224.gnuplot”。除此之外,还有一些问题:函数等于20的轮廓线(出于某种原因),垂直轴和数字不在左手边(我不仅更喜欢在那一边,它也是o)
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,
    ...
);