Created
March 15, 2019 21:46
-
-
Save uomodellamansarda/560615f82e63e5d2c1639d090c651954 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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