|
From: Paul S. <ps...@so...> - 2009-06-25 17:13:58
|
I've written my first python script with matplotlib, which works fine at the command line but not with cron. It's quite puzzling to me, and probably involves some path declaration that I don't know about.
#plot data from automate.csv
import matplotlib
import datetime
import numpy
from matplotlib import legend
from matplotlib.pyplot import figure, show, plot_date, setp, ylabel, savefig, xlabel
from matplotlib.dates import DayLocator, HourLocator, DateLocator, DateFormatter,drange, MinuteLocator, date2num, num2date
from matplotlib.mlab import csv2rec
from matplotlib.ticker import *
newr = csv2rec('/home/paulsimon/Documents/automate.csv')
x = date2num(newr.field(0))
fig = figure()
ax1 = fig.add_subplot(111)
line1, = ax1.plot_date(newr['dattim'], newr['bench_1'], '-r',label = 'bench 1')
line2, = ax1.plot_date(newr['dattim'], newr['bench_2'], '-b', label = 'bench 2')
line3, = ax1.plot_date(newr['dattim'], newr['eave'],'-k', label = 'eave')
line4, = ax1.plot_date(newr['dattim'], newr['outside'], '-g', label = 'outside')
ylabel('temperature')
xlabel(r'time/date')
hours = HourLocator(range(0,26,4))
dateformatter = DateFormatter('%I:%M %p\n%m/%d/%y')
ax1.xaxis.set_major_formatter(dateformatter)
ax1.xaxis.set_major_locator(hours)
ax1.set_ylim(30,100)
# Rotate x labels
for label in ax1.xaxis.get_ticklabels():
label.set_fontsize(8)
ax1.grid(True)
ax1.xaxis.grid(False)
yminorLocator = MultipleLocator(5)
ax1.yaxis.set_minor_locator(yminorLocator)
ax1.yaxis.grid(True,which='major', linestyle ='-')
ax1.yaxis.grid(True,which='minor',linestyle = ':')
leg = ax1.legend(('bench 1', 'bench 2', ' eave', 'outside'), 'lower right', shadow = True)
for t in leg.get_texts():
t.set_fontsize('small')
savefig('/home/paulsimon/python_scripts/image.png', format = 'png')
Running with --debug option, here are the two different output files:
$HOME=/home/paulsimon
CONFIGDIR=/home/paulsimon/.matplotlib
matplotlib data path /usr/lib/python2.5/site-packages/matplotlib/mpl-data
loaded rc file /usr/lib/python2.5/site-packages/matplotlib/mpl-data/matplotlibrc
matplotlib version 0.91.2
verbose.level debug
interactive is False
units is False
platform is linux2
loaded modules: ['_bisect', 'xml.sax.urlparse', 'distutils', 'matplotlib.matplotlib', 'datetime', 'matplotlib.tempfile', 'distutils.sysconfig', 'encodings.encodings', 'pytz.cStringIO', 'xml', 'distutils.dep_util', 'struct', 'tempfile', 'xml.sax.urllib', 'imp', '_struct', 'pytz.os', 'zipimport', 'string', 'encodings.utf_8', 'matplotlib.__future__', 'pytz.tzinfo', 'pytz.datetime', 'distutils.re', 'bisect', 'signal', 'random', 'xml.sax.xmlreader', 'matplotlib.pytz', 'distutils.log', 'pytz.tzfile', 'cStringIO', 'pkgutil', 'locale', 'xml.sax.saxutils', 'encodings', 'dateutil', 'matplotlib.warnings', 'matplotlib.string', 'pytz.pytz', 'urllib', 'matplotlib.sys', 're', 'new', 'math', 'fcntl', 'UserDict', 'distutils.os', 'matplotlib', 'codecs', 'md5', '_locale', 'matplotlib.sre_constants', 'matplotlib.os', 'thread', 'pkg_resources', 'weakref', 'itertools', 'distutils.spawn', 'distutils.sys', 'os', 'sre_parse', '__future__', 'matplotlib.copy', 'xml.sax.types', '_sre', '__builtin__', 'matplotlib.re', 'operator', 'distutils.util', 'distutils.string', 'matplotlib.datetime', 'posixpath', 'errno', '_socket', 'binascii', 'sre_constants', 'matplotlib.md5', 'types', 'pytz.sys', 'xml.sax.handler', 'pytz.pkg_resources', 'xml.sax.os', 'matplotlib.xml', '_codecs', 'pytz', 'matplotlib.pyparsing', 'copy', 'socket', '_types', 'matplotlib.dateutil', 'hashlib', 'posix', 'encodings.aliases', 'matplotlib.fontconfig_pattern', 'exceptions', 'xml.sax._exceptions', 'pytz.bisect', 'distutils.distutils', 'copy_reg', 'sre_compile', 'xml.sax', '_hashlib', '_random', 'pytz.struct', 'site', '__main__', 'shutil', 'matplotlib.weakref', 'strop', 'encodings.codecs', 'gettext', 'matplotlib.rcsetup', 'pytz.sets', 'xml.sax.codecs', 'stat', '_ssl', 'warnings', 'encodings.types', 'sets', 'sys', 'xml.sax.sys', 'os.path', 'pytz.gettext', 'matplotlib.distutils', '_weakref', 'distutils.errors', 'urlparse', 'linecache', 'matplotlib.shutil', 'time']
Using fontManager instance from /home/paulsimon/.matplotlib/fontManager.cache
numerix numpy 1.0.4
backend GTKAgg version 2.12.1
findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
findfont returning /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
findfont returning /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
...
findfont returning /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
findfont found Bitstream Vera Sans, normal, normal 400, normal, 9.996
findfont returning /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
And this is the output file (complete) running under cron:
$HOME=/home/paulsimon
CONFIGDIR=/home/paulsimon/.matplotlib
matplotlib data path /usr/lib/python2.5/site-packages/matplotlib/mpl-data
loaded rc file /usr/lib/python2.5/site-packages/matplotlib/mpl-data/matplotlibrc
matplotlib version 0.91.2
verbose.level debug
interactive is False
units is False
platform is linux2
loaded modules: ['_bisect', 'xml.sax.urlparse', 'distutils', 'matplotlib.matplotlib', 'datetime', 'matplotlib.tempfile', 'distutils.sysconfig', 'encodings.encodings', 'pytz.cStringIO', 'xml', 'distutils.dep_util', 'struct', 'tempfile', 'xml.sax.urllib', 'imp', '_struct', 'pytz.os', 'zipimport', 'string', 'matplotlib.__future__', 'pytz.tzinfo', 'pytz.datetime', 'distutils.re', 'bisect', 'signal', 'random', 'xml.sax.xmlreader', 'matplotlib.pytz', 'distutils.log', 'pytz.tzfile', 'cStringIO', 'pkgutil', 'locale', 'xml.sax.saxutils', 'encodings', 'dateutil', 'matplotlib.warnings', 'matplotlib.string', 'pytz.pytz', 'urllib', 'matplotlib.sys', 're', 'new', 'math', 'fcntl', 'UserDict', 'distutils.os', 'matplotlib', 'codecs', 'md5', '_locale', 'matplotlib.sre_constants', 'matplotlib.os', 'thread', 'pkg_resources', 'weakref', 'itertools', 'distutils.spawn', 'distutils.sys', 'os', 'sre_parse', '__future__', 'matplotlib.copy', 'xml.sax.types', '_sre', '__builtin__', 'matplotlib.re', 'operator', 'distutils.util', 'distutils.string', 'matplotlib.datetime', 'posixpath', 'errno', '_socket', 'binascii', 'sre_constants', 'matplotlib.md5', 'types', 'pytz.sys', 'xml.sax.handler', 'pytz.pkg_resources', 'xml.sax.os', 'matplotlib.xml', '_codecs', 'pytz', 'matplotlib.pyparsing', 'copy', 'socket', '_types', 'matplotlib.dateutil', 'hashlib', 'posix', 'encodings.aliases', 'matplotlib.fontconfig_pattern', 'exceptions', 'xml.sax._exceptions', 'pytz.bisect', 'distutils.distutils', 'copy_reg', 'sre_compile', 'xml.sax', '_hashlib', '_random', 'pytz.struct', 'site', '__main__', 'shutil', 'matplotlib.weakref', 'strop', 'encodings.codecs', 'gettext', 'matplotlib.rcsetup', 'pytz.sets', 'xml.sax.codecs', 'stat', '_ssl', 'warnings', 'encodings.types', 'encodings.ascii', 'sets', 'sys', 'xml.sax.sys', 'os.path', 'pytz.gettext', 'matplotlib.distutils', '_weakref', 'distutils.errors', 'urlparse', 'linecache', 'matplotlib.shutil', 'time']
numerix numpy 1.0.4
Using fontManager instance from /home/paulsimon/.matplotlib/fontManager.cache
The plot output took me a lot of time to work out, which I enjoyed, and the output is dazzling!
Paul Simon
|
|
From: Sandro T. <mat...@gm...> - 2009-06-25 19:01:17
|
Hello Paul, On Thu, Jun 25, 2009 at 19:13, Paul Simon<ps...@so...> wrote: > I've written my first python script with matplotlib, which works fine at the > command line but not with cron. It's quite puzzling to me, and probably > involves some path declaration that I don't know about. I may have read the mail fast, but I can't see any notice about if the image outputs are different (other than the textual outputs). > matplotlib version 0.91.2 You might also want to update: matplotlib latest release is 0.98.5.3 Regards, -- Sandro Tosi (aka morph, morpheus, matrixhasu) My website: http://matrixhasu.altervista.org/ Me at Debian: http://wiki.debian.org/SandroTosi |
|
From: Paul S. <ps...@so...> - 2009-06-25 19:13:30
|
Hi Sandro, There is no image output when the script is run from cron. I think that is what you are asking. I thought about updating matplotlib but at this point don't want to change versions unless all else fails. I"m running Mandriva 2008.1 and it's a lot of work. Is there a more detailed way I can debug to find out where the failure is? Paul ----- Original Message ----- From: "Sandro Tosi" <mat...@gm...> To: "Paul Simon" <ps...@so...> Cc: <mat...@li...> Sent: Thursday, June 25, 2009 12:00 PM Subject: Re: [Matplotlib-users] Running matplotlib job with cron > Hello Paul, > > On Thu, Jun 25, 2009 at 19:13, Paul Simon<ps...@so...> wrote: >> I've written my first python script with matplotlib, which works fine at >> the >> command line but not with cron. It's quite puzzling to me, and probably >> involves some path declaration that I don't know about. > > I may have read the mail fast, but I can't see any notice about if the > image outputs are different (other than the textual outputs). > >> matplotlib version 0.91.2 > > You might also want to update: matplotlib latest release is 0.98.5.3 > > Regards, > -- > Sandro Tosi (aka morph, morpheus, matrixhasu) > My website: http://matrixhasu.altervista.org/ > Me at Debian: http://wiki.debian.org/SandroTosi > > |
|
From: Eric F. <ef...@ha...> - 2009-06-25 22:05:11
Attachments:
crontab.uhdas
|
Paul Simon wrote:
> I've written my first python script with matplotlib, which works fine at
> the command line but not with cron. It's quite puzzling to me, and
> probably involves some path declaration that I don't know about.
>
> #plot data from automate.csv
> import matplotlib
Right here you should include:
matplotlib.use('Agg')
Without this, you are loading the interactive graphical backend, gtkagg.
I don't know whether this is causing the problem with running under
cron, but it is worth changing anyway.
I don't know why your debug output file is stopping after the first
fontManager line.
What does your crontab file look like? I think this is more a cron
problem than an mpl problem. Cron tends to run things in a very
different environment than one has when running from the command line,
and it is common--at least in my own experience--to have this sort of
problem with things that work on the command line and not from cron.
Attached is a crontab file that we use in this manner. Note that we set
the shell to /bin/bash; otherwise cron will use the most minimal shell
version. Second, note that before executing the script, we execute a
file that sets up the environment to be similar to what we have when
logged in normally. Third, the redirection of stdout and stderr to a
log file facilitates debugging, allowing you to see the result of
debugging print statements as well as any exceptions or other error
messages.
Eric
> import datetime
> import numpy
> from matplotlib import legend
> from matplotlib.pyplot import figure, show, plot_date, setp, ylabel,
> savefig, xlabel
> from matplotlib.dates import DayLocator, HourLocator, DateLocator,
> DateFormatter,drange, MinuteLocator, date2num, num2date
> from matplotlib.mlab import csv2rec
> from matplotlib.ticker import *
> newr = csv2rec('/home/paulsimon/Documents/automate.csv')
> x = date2num(newr.field(0))
> fig = figure()
> ax1 = fig.add_subplot(111)
> line1, = ax1.plot_date(newr['dattim'], newr['bench_1'], '-r',label =
> 'bench 1')
> line2, = ax1.plot_date(newr['dattim'], newr['bench_2'], '-b', label =
> 'bench 2')
> line3, = ax1.plot_date(newr['dattim'], newr['eave'],'-k', label = 'eave')
> line4, = ax1.plot_date(newr['dattim'], newr['outside'], '-g', label =
> 'outside')
>
> ylabel('temperature')
> xlabel(r'time/date')
> hours = HourLocator(range(0,26,4))
>
> dateformatter = DateFormatter('%I:%M %p\n%m/%d/%y')
> ax1.xaxis.set_major_formatter(dateformatter)
> ax1.xaxis.set_major_locator(hours)
> ax1.set_ylim(30,100)
> # Rotate x labels
> for label in ax1.xaxis.get_ticklabels():
> label.set_fontsize(8)
>
> ax1.grid(True)
> ax1.xaxis.grid(False)
> yminorLocator = MultipleLocator(5)
> ax1.yaxis.set_minor_locator(yminorLocator)
> ax1.yaxis.grid(True,which='major', linestyle ='-')
> ax1.yaxis.grid(True,which='minor',linestyle = ':')
> leg = ax1.legend(('bench 1', 'bench 2', ' eave', 'outside'), 'lower
> right', shadow = True)
> for t in leg.get_texts():
> t.set_fontsize('small')
>
> savefig('/home/paulsimon/python_scripts/image.png', format = 'png')
>
>
> Running with --debug option, here are the two different output files:
>
> $HOME=/home/paulsimon
> CONFIGDIR=/home/paulsimon/.matplotlib
> matplotlib data path /usr/lib/python2.5/site-packages/matplotlib/mpl-data
> loaded rc file
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/matplotlibrc
> matplotlib version 0.91.2
> verbose.level debug
> interactive is False
> units is False
> platform is linux2
> loaded modules: ['_bisect', 'xml.sax.urlparse', 'distutils',
> 'matplotlib.matplotlib', 'datetime', 'matplotlib.tempfile',
> 'distutils.sysconfig', 'encodings.encodings', 'pytz.cStringIO', 'xml',
> 'distutils.dep_util', 'struct', 'tempfile', 'xml.sax.urllib', 'imp',
> '_struct', 'pytz.os', 'zipimport', 'string', 'encodings.utf_8',
> 'matplotlib.__future__', 'pytz.tzinfo', 'pytz.datetime', 'distutils.re',
> 'bisect', 'signal', 'random', 'xml.sax.xmlreader', 'matplotlib.pytz',
> 'distutils.log', 'pytz.tzfile', 'cStringIO', 'pkgutil', 'locale',
> 'xml.sax.saxutils', 'encodings', 'dateutil', 'matplotlib.warnings',
> 'matplotlib.string', 'pytz.pytz', 'urllib', 'matplotlib.sys', 're',
> 'new', 'math', 'fcntl', 'UserDict', 'distutils.os', 'matplotlib',
> 'codecs', 'md5', '_locale', 'matplotlib.sre_constants', 'matplotlib.os',
> 'thread', 'pkg_resources', 'weakref', 'itertools', 'distutils.spawn',
> 'distutils.sys', 'os', 'sre_parse', '__future__', 'matplotlib.copy',
> 'xml.sax.types', '_sre', '__builtin__', 'matplotlib.re', 'operator',
> 'distutils.util', 'distutils.string', 'matplotlib.datetime',
> 'posixpath', 'errno', '_socket', 'binascii', 'sre_constants',
> 'matplotlib.md5', 'types', 'pytz.sys', 'xml.sax.handler',
> 'pytz.pkg_resources', 'xml.sax.os', 'matplotlib.xml', '_codecs', 'pytz',
> 'matplotlib.pyparsing', 'copy', 'socket', '_types',
> 'matplotlib.dateutil', 'hashlib', 'posix', 'encodings.aliases',
> 'matplotlib.fontconfig_pattern', 'exceptions', 'xml.sax._exceptions',
> 'pytz.bisect', 'distutils.distutils', 'copy_reg', 'sre_compile',
> 'xml.sax', '_hashlib', '_random', 'pytz.struct', 'site', '__main__',
> 'shutil', 'matplotlib.weakref', 'strop', 'encodings.codecs', 'gettext',
> 'matplotlib.rcsetup', 'pytz.sets', 'xml.sax.codecs', 'stat', '_ssl',
> 'warnings', 'encodings.types', 'sets', 'sys', 'xml.sax.sys', 'os.path',
> 'pytz.gettext', 'matplotlib.distutils', '_weakref', 'distutils.errors',
> 'urlparse', 'linecache', 'matplotlib.shutil', 'time']
> Using fontManager instance from
> /home/paulsimon/.matplotlib/fontManager.cache
> numerix numpy 1.0.4
> backend GTKAgg version 2.12.1
> findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
> findfont returning
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
> findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
> findfont returning
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
> findfont found Bitstream Vera Sans, normal, normal 400, normal, 8.0
>
> ...
>
>
> findfont returning
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
> findfont found Bitstream Vera Sans, normal, normal 400, normal, 9.996
> findfont returning
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf
>
> And this is the output file (complete) running under cron:
>
> $HOME=/home/paulsimon
> CONFIGDIR=/home/paulsimon/.matplotlib
> matplotlib data path /usr/lib/python2.5/site-packages/matplotlib/mpl-data
> loaded rc file
> /usr/lib/python2.5/site-packages/matplotlib/mpl-data/matplotlibrc
> matplotlib version 0.91.2
> verbose.level debug
> interactive is False
> units is False
> platform is linux2
> loaded modules: ['_bisect', 'xml.sax.urlparse', 'distutils',
> 'matplotlib.matplotlib', 'datetime', 'matplotlib.tempfile',
> 'distutils.sysconfig', 'encodings.encodings', 'pytz.cStringIO', 'xml',
> 'distutils.dep_util', 'struct', 'tempfile', 'xml.sax.urllib', 'imp',
> '_struct', 'pytz.os', 'zipimport', 'string', 'matplotlib.__future__',
> 'pytz.tzinfo', 'pytz.datetime', 'distutils.re', 'bisect', 'signal',
> 'random', 'xml.sax.xmlreader', 'matplotlib.pytz', 'distutils.log',
> 'pytz.tzfile', 'cStringIO', 'pkgutil', 'locale', 'xml.sax.saxutils',
> 'encodings', 'dateutil', 'matplotlib.warnings', 'matplotlib.string',
> 'pytz.pytz', 'urllib', 'matplotlib.sys', 're', 'new', 'math', 'fcntl',
> 'UserDict', 'distutils.os', 'matplotlib', 'codecs', 'md5', '_locale',
> 'matplotlib.sre_constants', 'matplotlib.os', 'thread', 'pkg_resources',
> 'weakref', 'itertools', 'distutils.spawn', 'distutils.sys', 'os',
> 'sre_parse', '__future__', 'matplotlib.copy', 'xml.sax.types', '_sre',
> '__builtin__', 'matplotlib.re', 'operator', 'distutils.util',
> 'distutils.string', 'matplotlib.datetime', 'posixpath', 'errno',
> '_socket', 'binascii', 'sre_constants', 'matplotlib.md5', 'types',
> 'pytz.sys', 'xml.sax.handler', 'pytz.pkg_resources', 'xml.sax.os',
> 'matplotlib.xml', '_codecs', 'pytz', 'matplotlib.pyparsing', 'copy',
> 'socket', '_types', 'matplotlib.dateutil', 'hashlib', 'posix',
> 'encodings.aliases', 'matplotlib.fontconfig_pattern', 'exceptions',
> 'xml.sax._exceptions', 'pytz.bisect', 'distutils.distutils', 'copy_reg',
> 'sre_compile', 'xml.sax', '_hashlib', '_random', 'pytz.struct', 'site',
> '__main__', 'shutil', 'matplotlib.weakref', 'strop', 'encodings.codecs',
> 'gettext', 'matplotlib.rcsetup', 'pytz.sets', 'xml.sax.codecs', 'stat',
> '_ssl', 'warnings', 'encodings.types', 'encodings.ascii', 'sets', 'sys',
> 'xml.sax.sys', 'os.path', 'pytz.gettext', 'matplotlib.distutils',
> '_weakref', 'distutils.errors', 'urlparse', 'linecache',
> 'matplotlib.shutil', 'time']
> numerix numpy 1.0.4
> Using fontManager instance from
> /home/paulsimon/.matplotlib/fontManager.cache
>
> The plot output took me a lot of time to work out, which I enjoyed, and
> the output is dazzling!
>
> Paul Simon
>
>
>
>
> ------------------------------------------------------------------------
>
> ------------------------------------------------------------------------------
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Matplotlib-users mailing list
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
|