我需要在实时数据流中更新几个gnuplot图。我写了一个工作程序,但我不喜欢它。
import subprocess32 as sbp
plot = sbp.Popen(['gnuplot','-persist'], stdin = sbp.PIPE, stdout=sbp.PIPE, stderr = sbp.PIPE)
#realtime simulator
data = []
for x in range(10):
data.append((x,x*x))
print data
plot.stdin.write("plot '-' with lines\n")
#print "\n".join("%f %f"%d for d in data)
plot.stdin.write("\n".join("%f %f"%d for d in data).encode())
plot.stdin.write("\ne\n")
sleep (0.8)
sleep (20)
每次添加新值后重绘整个数组。如果有10万个元素怎么办?我认为在python中循环它们是非常昂贵的。我在文档中找到了replot
命令,该命令将数据添加到以前的gnuplot命令,但它与多个图不兼容。那么如何在没有循环遍历整个数据阵列的情况下在绘图中添加新坐标呢?