|
Adrian Immler
mod_python-maillist at uebergeek.de
Thu Jun 2 08:47:36 EDT 2005
hello !
i have following
def test(req):
import matplotlib
matplotlib.use('Agg')
from matplotlib.backends.backend_agg import FigureCanvasAgg as
FigureCanvas
from matplotlib.figure import Figure
fig = Figure()
canvas = FigureCanvas(fig)
ax = fig.add_subplot(111)
ax.plot([1,2,3])
ax.set_title('hi mom')
ax.grid(True)
ax.set_xlabel('time')
ax.set_ylabel('volts')
canvas.print_figure(sys.stdout)
# canvas.print_figure(req)
when i use this function from the console i get png binary output that i
could redirect to a file. when i call this function within mod_python
Mod_python error: "PythonHandler mod_python.publisher"
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line
299, in HandlerDispatch
result = object(req)
File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", line
136, in handler
result = util.apply_fs_data(object, req.form, req=req)
File "/usr/lib/python2.4/site-packages/mod_python/util.py", line 361,
in apply_fs_data
return object(**args)
File "/www/uebergeek.de/htdocs/music/test.py", line 44, in test
canvas.print_figure(sys.stdout)
File
"/usr/lib/python2.4/site-packages/matplotlib/backends/backend_agg.py",
line 383, in print_figure
basename, ext = os.path.splitext(filename)
File "/usr/lib/python2.4/posixpath.py", line 92, in splitext
i = p.rfind('.')
AttributeError: 'builtin_function_or_method' object has no attribute
'rfind'
so i tried to direct it directly to the browser with the line above where
not (sys.stdout) but (req) is, but that produces this error:
Mod_python error: "PythonHandler mod_python.publisher"
Traceback (most recent call last):
File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line
299, in HandlerDispatch
result = object(req)
File "/usr/lib/python2.4/site-packages/mod_python/publisher.py", line
136, in handler
result = util.apply_fs_data(object, req.form, req=req)
File "/usr/lib/python2.4/site-packages/mod_python/util.py", line 361,
in apply_fs_data
return object(**args)
File "/www/uebergeek.de/htdocs/music/test.py", line 45, in test
canvas.print_figure(req)
File
"/usr/lib/python2.4/site-packages/matplotlib/backends/backend_agg.py",
line 383, in print_figure
basename, ext = os.path.splitext(filename)
File "/usr/lib/python2.4/posixpath.py", line 92, in splitext
i = p.rfind('.')
AttributeError: 'mp_request' object has no attribute 'rfind'
so it is nearly the same error. now my question is:
how can i create a png file with matplotlib and send it to the client
without saving the file to harddisk and send that one.
thanks in advance !
p.s. yes i know that the content_type('image/png') is missing in the
above example ...
|