渐近线轴函数问题文档和示例

渐近线轴函数问题文档和示例

我正在尝试在使用 Asymptote 的同时学习它。我尝试通过 Asymptote 的轴(网格)函数(或任何其他包,例如 graph.asy)重现下面显示的图像。我无法理解手册的相应部分,也无法在 Charles Staat 教程中找到任何相关内容。此外,我找不到任何相关示例。

我终于创建了图表手动,使用以下内联代码。 我怎样才能复制具有预先存在的渐近线函数的图形?

\begin{asy}
size(3.3cm,3.3cm);
defaultpen(fontsize(9pt));

for (int i = -12; i <= 12; ++i) {
    draw((i/2,-2pi) -- (i/2, 2pi), palegrey);
    if (i %2 == 0) { draw((i/2,-2pi) -- (i/2, 2pi), grey); }
    if (i %4 == 0) { label(string(i/2,2), (i/2, -2pi), S, fontsize(8pt)); }
}

for (int i = -2; i <= 2; ++i) {
    draw((-2pi,i*pi) -- (2pi,i*pi), grey);
    if (i == 0) 
        { label("$0$", (-2pi, 0), W, fontsize(8pt)); }
    else 
        { label(string(i,2) + "pi", (-2pi, i*pi), W, fontsize(8pt)); }
}
\end{asy}

在此处输入图片描述

答案1

这里我提出两种解决方案。第一种我定义了一个函数,它给出了标签字符串(y 轴为 pi,x 轴为偶数)。

size(8cm,0);
import graph;
import graph_pi;

xlimits( -6, 6);
ylimits( -2pi, 2pi);

string ylab(real x)
{
string s;
s="$"+string(round(x/pi))+"\pi$";
if (abs(x)<epsilon) {s="0";}
if (round(x/pi)==1) {s="$\pi$";}
if (round(x/pi)==-1) {s="$-\pi$";}
return s;
}
string xlab(real x)
{
string s;
s=string(x);
if (round(x)%2==1) {s="";}
return s;
}
yaxis( LeftRight(), RightTicks(new string(real x) { return ylab(x);},Step=pi,pTick=black, ptick=lightgrey, extend=true));
xaxis(  BottomTop(), Ticks(new string (real x) {return xlab(x);}, Step=1, step=.5, pTick=black, ptick=lightgrey, extend=true));

在第二个解决方案中,我使用base_pi.asy非官方graph_pi.asy软件包。它提供了grid例程和一个labelfrac例程来获得分数类型的标签。您可以在此处找到它http://www.piprime.fr/asymptote/unofficial-asymptote-packages/

size(8cm,0);
import graph;
import graph_pi;

xlimits( -6, 6);
ylimits( -2pi, 2pi);



grid(xStep=1, xstep=1/2,
     yStep=pi, ystep=pi,
     pTick=.7bp+black,
     ptick=.7bp+.7white,
     above=false
     );

yaxis( LeftRight, RightTicks(labelfrac(
    factor=pi,
    symbol="\pi",
    symbolin=true,
    zero=true),
Step=pi,pTick=black, ptick=lightgrey));
xaxis( BottomTop, LeftTicks(Label("$%.2f$"), Step=2, step=1/2, ptick=lightgrey));

结果

在此处输入图片描述

相关内容