我有两个(对)列表,我想绘制。 我知道,我可以使用plothraw函数分别绘制每一个。 但是我如何在同一张图片中绘制它们,这样我最终得到两条不同颜色的曲线?
答案 0 :(得分:2)
作为参考,以下是使用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个向量中的数据,请说vx
,vy
,ux
,uy
所有长度都相同#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);}