【问题标题】:Plotting multiple lists in Pari在 Pari 中绘制多个列表
【发布时间】:2018-06-22 04:38:03
【问题描述】:

我有两个(成对的)列表要绘制。 我知道,我可以使用 plothraw 函数分别绘制每个图。 但是我怎样才能将它们绘制在同一张图片中,从而得到两条不同颜色的曲线呢?

【问题讨论】:

    标签: pari pari-gp


    【解决方案1】:

    作为参考,以下是使用plothraw将两个数据集绘制在两个单独的图中的方法:

    \\ As two separate plots using plothraw
    plothraw([0..200], apply(i->sin(i*3*Pi/200), [0..200]), 0);
    plothraw([0..200], apply(i->cos(i*3*Pi/200), [0..200]), 0);
    

    使用ploth的第一个解决方案:

     {ploth(i=0, 200, [i, sin(i*3*Pi/200), i, cos(i*3*Pi/200)], "Parametric|no_Lines", 200);}
    

    使用低级函数的第二个解决方案,但我无法让颜色工作(显然在 X-windows 上受支持,但在 Windows 上不支持):

    {my(s=plothsizes());plotinit(0,s[1]-1,s[2]-1);}
    plotscale(0, 0, 200, -1, 1);
    plotcolor(0, 2); \\ blue
    plotrecthraw(0, [ [0..200], apply(i->sin(i*3*Pi/200), [0..200]) ], 0);
    plotcolor(0, 4); \\ red
    plotpoints(0, [0..200], apply(i->cos(i*3*Pi/200), [0..200]));
    plotdraw([0,0,0]); \\ draws window 0 at (0,0)
    plotkill(0); \\ frees memory of window 0
    

    可能第一个解决方案是最容易使用的(特别是如果您不希望所有东西都使用相同的颜色)。如果您有 4 个向量中的数据,比如vxvyuxuy,所有这些向量的长度都相同#vx == #vy == #ux == #uy,那么正确的形式是:

    \\ first 2 lines just create test vectors
    vx=[0..200]; vy=apply(i->sin(i*3*Pi/200), [0..200]);
    ux=[0..200]; uy=apply(i->cos(i*3*Pi/200), [0..200]);
    \\ the actual plot - the \1's just round to integer index
    {ploth(i=1, #vx, [vx[i\1], vy[i\1], ux[i\1], uy[i\1]], "Parametric|no_Lines", #vx);}
    

    【讨论】:

    • 我无法将其用于列表。如果我替换 {ploth(i=0, 200, [i, sin(i*3*Pi/200), i, cos(i*3*Pi/200)], "Parametric|no_Lines", 200); } mylist[i] 的一个参数,然后我遇到麻烦,因为列表只接受整数值
    • PARI 的绘图功能相当基本——它们可以快速进行初始绘图,但在某些时候,将数据导出到具有更多功能的另一个工具会变得更容易。是的,在使用列表时,您需要执行 \1 之类的操作来将索引四舍五入为整数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2019-07-27
    • 2013-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-08-21
    相关资源
    最近更新 更多