根据标签在 Asymptote 中对齐图片?

根据标签在 Asymptote 中对齐图片?

我在使用 Asymptote 时遇到了一个令人困惑的问题。我想并排绘制一个轮廓图和一个曲面图,并尝试以下代码:

settings.outformat="pdf";
settings.render=8;
settings.prc=false;

import graph3;
import contour;

real f(pair z) {return (z.x^2+3*z.y^2)*exp(1-z.x^2-z.y^2);}

picture pic1;
size(pic1,175);
int n=10;
real[] c=new real[n];
for(int i=0; i < n; ++i) c[i]=3*i/n;
Label[] Labels=sequence(new Label(int i) {
return Label(c[i] != 0 ? (string) c[i] : "",Relative(unitrand()),    (0,0),UnFill(1bp));
 },c.length);
draw(pic1,Labels,contour(f,(-2,-2),(2,2),c),black+1+fontsize(6pt));

picture pic2;
currentprojection=orthographic(0.8,1,1);
defaultrender.merge=true;
size(pic2,175,120,IgnoreAspect);
size3(pic2,175);
draw(pic2,surface(f,(-2,-2),(2,2),Spline),lightgreen);

add(pic1.fit(),(0,0),W);
add(pic2.fit(),(5mm,0),E);

shipout("test");

我只得到了左侧的轮廓图![添加字符“|”以显示图像的右侧。]

在此处输入图片描述|

但是,如果我从轮廓图中删除标签参数,我会得到两张图片(当然没有标签)。

在此处输入图片描述|

为什么?我该怎么办?

答案1

首先,如果您的主要目标只是让这张特定的图片正常工作,我建议您遵循解决方案g.kov并切换两个add语句。

至于真正找出问题所在,我仍然不知道答案,但我有以下数据要添加到图片中:如果允许两幅图像重叠,则 3d 图像仅在位于先前添加的 2d 图像之上时才会显示。此外,从 3d 图像左边缘左侧开始的标签可以放在 3d 图像的顶部,但从右侧开始的标签(特别是标签0.3)隐藏在它下面。

add(pic1.fit(),(0,0));
add(pic2.fit(),(5mm,0),E);

在此处输入图片描述

反转语句的顺序add,显示整个 3d 图像并且0.3允许在其顶部放置标签:

add(pic2.fit(),(5mm,0),E);
add(pic1.fit(),(0,0));

在此处输入图片描述

相关内容