pass created plot to plot_audio/spec instead of outplot/extension, minor fixes
authorPaul Brossier <piem@altern.org>
Wed, 2 Aug 2006 14:46:50 +0000 (14:46 +0000)
committerPaul Brossier <piem@altern.org>
Wed, 2 Aug 2006 14:46:50 +0000 (14:46 +0000)
pass created plot to plot_audio/spec instead of outplot/extension, minor fixes

python/aubio/gnuplot.py
python/aubioplot-audio
python/aubioplot-spec

index f60903984b0ac79eeb0d195149cf291553895a4e..817a82bc8155a24bf5819b040ebc9ff7008d854d 100644 (file)
@@ -45,14 +45,13 @@ def audio_to_array(filename):
        time = numarray.arange(len(data))*framestep
        return time,data
 
-def plot_audio(filenames, outplot='', extension='', start=0, end=None, noaxis=None,xsize=1.,ysize=1.):
-       g = gnuplot_create(outplot, extension)
+def plot_audio(filenames, g, start=0, end=None, noaxis=None,xsize=1.,ysize=1.):
        d = []
        todraw = len(filenames)
        xorig = 0.
        xratio = 1./todraw
-       g.gnuplot('set size %f,%f;' % (xsize,ysize) )
-       g.gnuplot('set multiplot;')
+       #g('set rmargin 7')
+       g('set multiplot;')
        while (len(filenames)):
                time,data = audio_to_array(filenames.pop(0))
                if not noaxis and todraw==1:
@@ -63,14 +62,14 @@ def plot_audio(filenames, outplot='', extension='', start=0, end=None, noaxis=No
                                g.xlabel('Time (s)')
                        g.ylabel('Amplitude')
                d.append(make_audio_plot(time,data))
-               g.gnuplot('set size %f,%f;' % (xsize*xratio,ysize) )
-               g.gnuplot('set origin %f,0.;' % (xorig) )
-               g.gnuplot('set style data lines; \
+               g('set size %f,%f;' % (xsize*xratio,ysize) )
+               g('set origin %f,0.;' % (xorig) )
+               g('set style data lines; \
                        set yrange [-1.:1.]; \
                        set xrange [0:%f]' % time[-1]) 
                g.plot(d.pop(0))
                xorig += xsize*xratio 
-       g.gnuplot('unset multiplot;')
+       g('unset multiplot;')
 
 def audio_to_spec(filename,minf = 0, maxf = 0, lowthres = -20., 
                bufsize= 8192, hopsize = 1024):
@@ -116,9 +115,8 @@ def audio_to_spec(filename,minf = 0, maxf = 0, lowthres = -20.,
        assert len(data[0]) == len(freq)
        return data,time,freq
 
-def plot_spec(filename, outplot='',extension='', fileout=None, start=0, end=None, noaxis=None,log=1, minf=0, maxf= 0, xsize = 1., ysize = 1.,bufsize=8192, hopsize=1024):
+def plot_spec(filename, g, start=0, end=None, noaxis=None,log=1, minf=0, maxf= 0, xsize = 1., ysize = 1.,bufsize=8192, hopsize=1024):
        import Gnuplot
-       g = gnuplot_create(outplot,extension)
        data,time,freq = audio_to_spec(filename,minf=minf,maxf=maxf,bufsize=bufsize,hopsize=hopsize)
        xorig = 0.
        if not noaxis:
@@ -127,16 +125,24 @@ def plot_spec(filename, outplot='',extension='', fileout=None, start=0, end=None
                        g.xlabel('Time (ms)')
                else:
                        g.xlabel('Time (s)')
-               g.ylabel('Frequency (Hz)')
-       g('set size %f,%f' % (xsize, ysize))
+               if xsize < 0.5 and not log and max(time) > 1.:
+                       freq = [f/1000. for f in freq]
+                       minf /= 1000.
+                       maxf /= 1000.
+                       g.ylabel('Frequency (kHz)')
+               else:
+                       g.ylabel('Frequency (Hz)')
        g('set pm3d map')
        g('set palette rgbformulae -25,-24,-32')
+       #g('set lmargin 4')
+       g('set cbtics 20')
        #g('set colorbox horizontal')
        g('set xrange [0.:%f]' % time[-1]) 
-       g('set yrange [%f:%f]' % (minf,maxf))
        if log:
-               g('set yrange [%f:%f]' % (max(10,minf),maxf))
                g('set log y')
+               g('set yrange [%f:%f]' % (max(10,minf),maxf))
+       else:
+               g('set yrange [%f:%f]' % (minf,maxf))
        g.splot(Gnuplot.GridData(data,time,freq, binary=1))
        #xorig += 1./todraw
 
@@ -175,7 +181,7 @@ def gnuplot_init(outplot,debug=0,persist=1):
                 g('set output \'%s\'' % outplot)
        return g
 
-def gnuplot_create(outplot='',extension='',debug=0,persist=1):
+def gnuplot_create(outplot='',extension='',debug=0,persist=1, xsize=1., ysize=1.):
        import Gnuplot
         g = Gnuplot.Gnuplot(debug=debug, persist=persist)
        if not extension or not outplot: return g
@@ -188,4 +194,5 @@ def gnuplot_create(outplot='',extension='',debug=0,persist=1):
        g('set terminal %s' % extension)
        if outplot != "stdout":
                g('set output \'%s%s\'' % (outplot,ext))
+       g('set size %f,%f' % (xsize, ysize))
        return g
index 4e34b8d59a0fa93aee429627c3b1325c92548c49..402943e0bf89dc5299d5a45bf58272801f75f600 100755 (executable)
@@ -34,9 +34,7 @@ else:
   extension = ''
   outplot = None
 
-aubio.gnuplot.plot_audio(options.filename.split(','), 
-  extension = extension,
-  outplot = outplot,
-g,
+g = aubio.gnuplot.gnuplot_create(outplot,extension,xsize=options.xsize, ysize=options.xsize)
+aubio.gnuplot.plot_audio(options.filename.split(','), g,
   xsize=options.xsize,
   ysize=options.ysize)
index c0bef89d02d205c521efa4593d997181a77e08c4..f7c8a357d789f9f7eb68ef32e38b7478a964e5a8 100755 (executable)
@@ -55,7 +55,8 @@ else:
   extension = ''
   outplot = None
 
-plot_spec(filename, outplot=outplot, extension=extension, log=options.log,
+g = gnuplot_create(outplot,extension,xsize=options.xsize, ysize=options.ysize)
+plot_spec(filename, g, log=options.log,
   maxf = options.maxf, minf = options.minf, 
   xsize = options.xsize, ysize = options.ysize,
   bufsize = options.bufsize, hopsize = options.hopsize)