因为论文需要使用gnuplot作图,而我喜欢使用python来生成数据,所以研究了下gnuplot的带参数的脚本,这样我就可以在生成数据的同时调用gnuplot,实现的方法有很多,在这里我只讲我这种。
1 reset 2 set term png 3 set output output_fname 4 plot input_fname using 1:2 w lp pt 0 title 'data'
上面是一段简单的画折线图的gnuplot脚本,参数就是里面的output_fname和input_fname,在调用该脚本时需要在命令行中指定这两个参数,
1 # -*- coding: utf-8 -*- 2 ''' 3 @Time : 2018/6/28 14:41 4 @Author : Baoyu@mail.ustc.edu.cn 5 @Site : 6 @File : blog.py 7 @Software: PyCharm 8 ''' 9 import numpy as np 10 from subprocess import Popen 11 import os 12 13 preDir = os.getcwd() 14 env = os.environ 15 print(env) 16 print(os.get_exec_path(env)) 17 a = np.random.standard_normal(10) 18 f = open(os.path.join(preDir, "data.txt"), "w") 19 for i in range(10): 20 f.write("{} {}\n".format(i, a[i])) 21 f.close() 22 23 in_path = "\'"+os.path.join(preDir, "data.txt")+"\'" 24 out_path = "\'"+os.path.join(preDir, "data.png")+"\'" 25 cmd = ['gnuplot', 26 '-e', 27 "input_fname=" + in_path + ";output_fname=" + out_path + "", 28 os.path.join(preDir, "plot.plt") 29 ] 30 Popen(cmd)
第23行到30行就是脚本的执行过程,这里面使用了Popen来执行命令行。
效果如下: