graphs removing gaps to left and right,

hi,

I have successfully written my first test program in matlab, it works
perfectly except the display is not quite right, to the left and write
of the plotted data there are blank areas with nothing on, how can i get
rid of these a link to the image is attached, and the code is below.

hope someone can tell me what i am doing wrong.

http://imagebin.ca/view/dYSphQ.html

import dateutil
import datetime

class graph:
    def __init__(self):
        pass
        
    def data(self):
        pass
        
    def line_graph(self,path):
        return "matplotlib not installed, graph not displayed."
        
    def bar_graph(self,path):
        return "matplotlib not installed, graph not displayed."

try:
    import matplotlib
    matplotlib.use("agg")
    import numpy as np
    import matplotlib.pyplot as plt
    import pylab
    from matplotlib.dates import MonthLocator, WeekdayLocator
    
    class graph:
        def __init__(self):
            self.xaxis=[]
            self.yaxis=[]
            self.values=[]
            self.fig=pylab.figure()
            
        def data(self,data):
            self.values=data
        
        def labels(self):
            pass
        def xaxis_dates(self,dates,format="%d/%m/%Y"):
            dtlist=[datetime.datetime.strptime(s, format) for s in
dates]
            self.xaxis=pylab.date2num(dtlist)
            ax = self.fig.add_subplot(111)
            days = WeekdayLocator() # every year
            months = MonthLocator() # every month
            ax.xaxis.set_major_locator(months)
            #ax.xaxis.set_minor_locator(days)
            
        def line_graph(self):
            plt.plot_date(self.xaxis,self.values,visible=True,
linestyle='-')
            
        def bar_graph(self):
            plt.bar(self.xaxis,self.values)
            #plt.bar(self.xaxis,self.values,label=r)
        
        def make(self,fname):
            plt.savefig(fname)
            htmout="<img src=\""+fname+"\">"
            return htmout
            
#matplotlib not installed rather than fall over create a dummy class, as
we do not want to rely on graphing,
#non essential feature
except ImportError, e:
    class graph:
        def __init__(self):
            self.xaxis=[]
            self.yaxis=[]
            self.data=[]
            
        def data(self,data):
            pass
        
        def line_graph(self,path):
            return "matplotlib not installed, graph not displayed."
            
        def bar_graph(self,path):
            return "matplotlib not installed, graph not displayed."

        def make(self):
            plt.plot_date(da,d,visible=True, linestyle='-')
            plt.savefig("graph.png")
    
dates=['01/10/2008', '02/10/2008', '03/10/2008', '04/10/2008',
'05/10/2008', '06/10/2008', '07/10/2008', '08/10/2008', '09/10/2008',
'10/10/2008', '11/10/2008', '12/10/2008', '13/10/2008', '14/10/2008',
'15/10/2008', '16/10/2008', '17/10/2008', '18/10/2008', '19/10/2008',
'20/10/2008', '21/10/2008', '22/10/2008', '23/10/2008', '24/10/2008',
'25/10/2008', '26/10/2008', '27/10/2008', '28/10/2008', '29/10/2008']
data=(73, 76, 58, 0, 0, 105, 138, 98, 64, 42, 0, 0, 100, 115, 97, 69,
153, 1, 0, 84, 122, 131, 77, 97, 0, 0, 117, 99, 101)

g=graph()
g.xaxis_dates(dates)
g.data(data)
g.line_graph()
g.make("test.png")

g=graph()
g.xaxis_dates(dates)
g.data(data)
g.bar_graph()
g.make("testbar.png")
#dates=[datetime.datetime.strptime(s, "%d/%m/%Y") for s in r]
#print r
#print dates
#d=(73, 76, 58, 0, 0, 105, 138, 98, 64, 42, 0, 0, 100, 115, 97, 69, 153,
1, 0, 84, 122, 131, 77, 97, 0, 0, 117, 99, 101)
#d=(100,150)
#days = MonthLocator() # every year
#months = MonthLocator() # every month
#yearsFmt = DateFormatter('%Y')

#fig = pylab.figure()
#ax = fig.add_subplot(111)

#labels = ax.get_xticklabels()
#pylab.setp(labels,'rotation','vertical')

#days = MonthLocator() # every year
#months = MonthLocator() # every month
#ax.xaxis.set_major_locator(months)
#ax.xaxis.set_major_formatter(yearsFmt)
#ax.xaxis.set_minor_locator(days)

#da=pylab.date2num(dates)
#plt.plot_date(da,d,visible=True, linestyle='-')
#plt.bar(da,d,label=r)
#plt.savefig("graph.png")

CONFIDENTIALITY NOTICE:
The information contained in this communication is confidential and may be legally privileged. It is intended solely for the use of the individual(s) to whom it is addressed and others authorised to receive it. If you are not the intended recipient you are hereby notified that any disclosure, copying, distribution or action taken in relation to the contents of this information is strictly prohibited and may be unlawful. Neither the sender nor HoMedics Group Ltd is liable for the correct and complete transmission of the contents of an email, or for its timely receipt. If you receive this communication in error, please destroy it and notify HoMedics Group Ltd immediately on +44 (0)1732 354828. Company No. 4353765, Registered Address: HoMedics House, Somerhill Business Park, Five Oak Green Road, Tonbridge, Kent, TN11 0GP.

oliver marks wrote:

hi,

I have successfully written my first test program in matlab, it works
perfectly except the display is not quite right, to the left and write
of the plotted data there are blank areas with nothing on, how can i get
rid of these a link to the image is attached, and the code is below.

I don't think it's anything you're doing wrong, it's just that
matplotlib leaves some space by default. What you want it the
pylab.subplots_adjust function:

http://matplotlib.sourceforge.net/api/pyplot_api.html#matplotlib.pyplot.subplots_adjust

You might want to try something like (the numbers are in normalized
figure coordinates, such that 0 is very left/bottom and 1.0 is the very
right/top):

pylab.subplots_adjust(left=0.05, right=0.95)

Putting this right after your call to pylab.figure() works for me.

You can override the default in you matplotlibrc file as well, if you wish.

Ryan

···

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma