在 Pari 中绘制多个列表

Plotting multiple lists in Pari

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

作为参考,以下是使用 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 's just round to integer index
{ploth(i=1, #vx, [vx[i], vy[i], ux[i], uy[i]], "Parametric|no_Lines", #vx);}