i'm looking for a solution, to start to write a web-app to generate graph using 
matplotlib 
the graph needs to be generated using some inputs parameters coming from the 
page itself.

right now i'm rewriting the app from scratch ..  but i'm stuck on how to 
integrate a query button to the python code .. 

essentially what i need to start is :

a page with a line-edit input box + Jquery widget (a simple button, will be 
enough to learn more)

then connect the button to execute a generic python code that will use as input 
the text in the line-edit 
.. the generic python code will process the text received as input and return 
the results on the same page where the line-edit and the button are.

i hope my description gives you an idea of what i was looking for

Many thanks for any help!


Massimo.


Il giorno May 11, 2012, alle ore 10:49 AM, Massimo Di Stefano ha scritto:

> 
> Hi All,
> 
> i'm tring to learn web2py, thanks for the wonderful book and for the really 
> nice tutorial!
> i'm a bit 'stuck' on how to perform a simple task (i guess it is simple) 
> because of my ignorance.
> 
> .. i'm bring to update dynamic a graph-chart (generated with matplotlib) 
> using a form to pass the input the draw-function.
> 
> 
> what i have is a controller :
> 
> # template_example.py  that 'espone' a function 'variables' , it will display 
> an image generated by matplotlib using the 'stem_plot' function (in the same 
> .py file)
> 
> 
> # import a lib that generate the data from the url gived as input
> from ecoopclimate import Climate
> #import some matplotlib methodsm numpy ... 
> from pylab import stem, setp, grid, savefig, show, gca, subplot, 
> subplots_adjust
> import matplotlib as mpl
> import matplotlib.pyplot as plt
> import datetime as dt
> import numpy as np
> # plot function
> def stem_plot(data, name):
>     data[np.isnan(data)]=0
>     fig = plt.figure()
>     ax = fig.add_subplot(211)
>     mindate = int(data[0][0])
>     maxdate = int(data[0][-1])
>     date2_1 = dt.datetime(mindate, 1, 1)
>     date2_2 = dt.datetime(maxdate, 1, 1)
>     delta2 = dt.timedelta(days=365)
>     dates2 = mpl.dates.drange(date2_1, date2_2, delta2)
> 
>     dateFmt = mpl.dates.DateFormatter('%Y')
>     ax.xaxis.set_major_formatter(dateFmt)
>     fig.autofmt_xdate(bottom=0.1) 
>     x_p = dates2[np.where(data[1]>=0)[0]]
>     y_p = data[1][np.where(data[1]>=0)[0]]
>     x_n = dates2[np.where(data[1]<0)[0]]
>     y_n = data[1][np.where(data[1]<0)[0]]
> 
>     markerline, stemlines, baseline = stem(x_p, y_p, 'r-')
>     setp(markerline, 'markerfacecolor', 'b')
>     setp(baseline, 'color', 'r', 'linewidth', 2)
>     setp(stemlines, 'linewidth', 1)
>     markerline, stemlines, baseline = stem(x_n, y_n, 'b-')
>     setp(markerline, 'markerfacecolor', 'b')
>     setp(baseline, 'color', 'r', 'linewidth', 2)
>     setp(stemlines, 'linewidth', 1)
>     grid()
>     setp(gca(), 'xlabel', 'Year', 'ylabel', name)
>     fig = '/Users/epifanio/web2py/applications/welcome/static/'+name+'.png'
>     dateFmt = mpl.dates.DateFormatter('%Y')
>     savefig(fig)
>     return fig
>     #show()
> 
> # function connected to the view : variables.html
> def variables():
>     nao_url = 
> 'https://climatedataguide.ucar.edu/sites/default/files/cas_data_files/asphilli/nao_station_djfm.txt'
>     clm = Climate()
>     NAO = clm.nao(nao_url, 'nao.txt')
>     image = stem_plot(NAO['nao'], 'nao')
>     return dict(d=URL('static', 'nao.png'))
> 
> 
> the view template_example/variables.html is : 
> 
> {{extend 'layout.html'}}
> <h1>Image generated with matplotlib</h1>
> 
> <img src="{{=d}}" alt="Red dot" />
> 
> 
> As you can see from the code in stem_plot it takes as input :  'data' and 
> 'name'
> i'm hardcoding the var inside the function 'variables' 
> 
> i need to modify that code adding a 'form' in the view that will take 2 
> string as input
> 
> nao_url = 
> 'https://climatedataguide.ucar.edu/sites/default/files/cas_data_files/asphilli/nao_station_djfm.txt'
> image_name = 'imagename'
> 
> and pass this  input to the main function that generate the graph.
> Have you any hints on how to do that ?
> i'd like to have the form in the same page where the image is displayed
> so that i can update the image every time i'll resubmit the form.
> i'm a beginner, an example that does something like that will be really 
> helpful :)
> Many many Thanks for your help! 
> Massimo.
> 
> 
> 
> 
>  

Reply via email to