我有一个python脚本,我写了一个.gnu文件,它绘制了一个.png文件。我试图通过将范围设置为最大值和最小值的5%来使yrange更具动态性。
我做错了什么?
此代码不会像这样运行。
#-- write out .gnu file
self.output = textwrap.dedent('''\
set terminal png size 800,600
set output "{0}"
set grid
set xlabel "Cycle"
set title "{1}"
set xtics ({2})
set yrange[GPVAL_Y_MIN:GPVAL_Y_MAX]
plot ''').format(self.figurename, self.title, ",".join(plot_data.keys()), self.styletype, self.datafile)
for n in range(0,max_num_lines):
tmp_str = " ".join(['"{2}"','using','1:'+str(n+2),'title',"'"+self.titles[n+1]+"'",'w linespoints {1}']).format(self.figurename, self.linecombos[n], self.datafile)
if n!=max(range(0,max_num_lines)):
tmp_str += ", "
self.output += tmp_str
pass
答案 0 :(得分:0)
在您实际绘制内容之前,内部变量GPVAL_Y_MIN
/ GPVAL_Y_MAX
未初始化。为避免这种情况,您可以使用stats
命令分析文件,并通过STATS_min_y
/ STATS_max_y
变量提供所需的最小值/最大值:
self.output = textwrap.dedent('''\
set terminal png size 800,600
set output "{0}"
set grid
set xlabel "Cycle"
set title "{1}"
set xtics ({2})
#analyze the file and adjust y-range
stats "{3}" nooutput
set yrange[STATS_min_y:STATS_max_y]
plot ''').format(self.figurename, self.title, ",".join(plot_data.keys()), self.styletype, self.datafile)