Skip to content

Instantly share code, notes, and snippets.

@uomodellamansarda
Created March 15, 2019 21:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uomodellamansarda/560615f82e63e5d2c1639d090c651954 to your computer and use it in GitHub Desktop.
Save uomodellamansarda/560615f82e63e5d2c1639d090c651954 to your computer and use it in GitHub Desktop.
#In questa sezione importiamo i moduli per la visualizzazione interattiva dei dati
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, Plot, Select,LinearAxis, Grid, HoverTool
from bokeh.models.glyphs import VBar
from bokeh.plotting import figure,curdoc
from bokeh.io import show,push_notebook, output_notebook,output_file
#Output_notebook() è necessario per visualizzare
#i grafici all'interno di jupyter notebook
output_notebook()
#Voglio provare a fare un plot interattivo
#Selezionando la variabile di interesse
#Viene rappresentato graficamente
#L'elemento selezionato
df_r=df_train.copy()
#Stiamo cambiando il data type di date
#da Time a String
#Così che ColumnDataSource non dia di matto
df_r['date']=df_r['date'].tolist()
source = ColumnDataSource(data=df_r)
#Dobbiamo selezionare tutte le colonne
#Ad eccezione di quella contenente il tempo che sarà unica per tutti
activity_list=df_train.columns[1:].unique().tolist().copy()
print(activity_list)
print(df_r.date.max())
#La nostra variabile di default
#Serve solo per inizializzare il sistema
#Poteva essere Humidity o Light
activity_selected='Temperature'
df_r['date']=df_r['date'].tolist()
def modify_doc(doc):
xrange=[0,df_r.index.max()]
yrange=[0,df_r[activity_selected].max()]
source = ColumnDataSource(data=dict(x=df_r.index,y=df_r[activity_selected],date=df_r['date']))
hover=HoverTool(tooltips=[('Date','@date{%F}')],formatters={'date':'datetime'})
plot=figure(title='Andamento',tools=[hover,'pan','wheel_zoom'], plot_width=400, plot_height=400,x_range=(xrange), y_range=(yrange))
plot.line(x='x', y="y",source=source)
def update_plot(attr, old, new):
activity=select.value
data=pd.DataFrame(data=df_r[activity], index=df_r.index)
source.data=ColumnDataSource(data=dict(x=data.index,y=data[activity],date=df_r['date'])).data
plot.y_range.start=0
#Questo punto serve per l'aggiornamento dell'asse y
plot.y_range.end=df_r[activity].max()
#In Questo modo conosciamo e visualiziamo l'ultima selezione
#ed abbiamo uno storico delle visualizzazioni
print("Your last selection:",select.value)
select = Select(title='Select Activity', value=activity_selected, options=activity_list)
select.on_change('value', update_plot)
layout=column(select, plot)
doc.add_root(layout)
show(modify_doc)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment