如何在python中自动调整gnuplot的yrange

时间:2017-07-21 15:29:03

标签: gnuplot

我有一个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

1 个答案:

答案 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)