Gnuplot中基于数组dt绘制数组e的绘图问题求助
Gnuplot数组绘图解决方案
直接执行plot dt, e只会输出数组内容,因为Gnuplot默认不会将两个数组识别为x/y坐标序列,需通过索引遍历的方式指定坐标点:
方法1:for循环遍历数组索引
假设你已完成数组赋值(如dt[1]=5e-11; dt[2]=1e-10; dt[3]=2.5e-10),执行以下命令即可绘图:
plot for [i=1:|dt|] dt[i], e[i] with linespoints pt 7 title 'e vs dt'
|dt|自动获取数组长度,无需手动指定元素个数with linespoints同时绘制点和连线,可根据需求换成with points(仅点)或with lines(仅线)
方法2:虚拟数据源映射
用虚拟数据源'+'配合数组索引映射,写法更简洁:
plot '+' using (dt[$0+1]):(e[$0+1]) every ::0::(|dt|-1) with linespoints title 'e vs dt'
$0是虚拟行号(从0开始),$0+1对应Gnuplot数组的1-based索引every ::0::(|dt|-1)限制只生成与数组长度匹配的行数
执行上述任意命令后,就能得到以dt为横轴、e为纵轴的图形,而非仅输出数组数值。
内容的提问来源于stack exchange,提问作者sleepydrmike
相关产品推荐
相关产品推荐

