def output_chart(issues_df, output_mode='static'):
    import datetime
    import bokeh
    from bokeh.models import HoverTool

    # Add timestamp to title

    issues_chart = Bar(issues_df,
                       label='value_delivered',
                       values='status',
                       agg='count',
                       stack='status',
                       title=ISSUES_TITLE + " (Updated " +
                       datetime.datetime.now().strftime('%m/%d/%Y') + ")",
                       xlabel="Value Delivered",
                       ylabel="Number of Use Cases",
                       legend='top_right',
                       tools='hover',
                       color=brewer["GnBu"][3])

    issues_chart.plot_width = DESTINATION_FRAME_WIDTH - (HTML_BODY_MARGIN * 2)
    issues_chart.plot_height = DESTINATION_FRAME_HEIGHT - (HTML_BODY_MARGIN *
                                                           2)
    issues_chart.logo = None
    issues_chart.toolbar_location = None

    hover = issues_chart.select(dict(type=HoverTool))
    hover.tooltips = [("Value Delivered", "$x")]

    #--- Configure output ---
    reset_output()

    if output_mode == 'static':
        # Static file.  CDN is most space efficient
        output_file(ISSUES_FILE,
                    title=ISSUES_TITLE,
                    autosave=False,
                    mode='cdn',
                    root_dir=None)  # Generate file
        save(issues_chart, filename=ISSUES_FILE)
    elif output_mode == 'notebook':
        output_notebook()  # Show inline
        show(issues_chart)
    else:
        # Server (using internal server IP, rather than localhost or external)
        session = bokeh.session.Session(root_url=BOKEH_SERVER_IP,
                                        load_from_config=False)
        output_server("ddod_chart", session=session)
        show(issues_chart)
def plot_average_dts(df, hours):
    
    lasti = 0
    tmp = 0
    tmplist = []
    ### Currently using a fixed method timeset, if there is a better way to do a log loop this could be changed. ###
    lasti = 0
    tmp = 0
    tmplist = []
    xlist = []
    for i in range(1,10):
        tmp = 0
        for item in df['noao_time']:
            if item > lasti and item < i:
                tmp = tmp + 1
        tmplist.append(tmp)
        xlist.append(i)
        lasti = i
    for i in range(10,100,10):
        tmp = 0
        for item in df['noao_time']:
            if item > lasti and item < i:
                tmp = tmp + 1
        tmplist.append(tmp)
        xlist.append(i)
        lasti = i
    for i in range(100,1000,100):
        tmp = 0
        for item in df['noao_time']:
            if item > lasti and item < i:
                tmp = tmp + 1
        tmplist.append(tmp)
        xlist.append(i)
        lasti = i


    graph_info = {}
    graph_info['values'] = tmplist
    graph_info['Time in minutes'] = xlist
    p = Bar(graph_info, values='values', label='Time in minutes', ylabel='Number of transfers', color='navy', title='DTS time plot')
    
    p.plot_height = 500
    p.plot_width = 1000   

    return p
def output_chart(issues_df,output_mode='static'):
    import datetime
    import bokeh
    from bokeh.models import HoverTool


    # Add timestamp to title
    
    issues_chart = Bar(issues_df, label='value_delivered', 
               values='status', agg='count', stack='status',
               title=ISSUES_TITLE+" (Updated "+datetime.datetime.now().strftime('%m/%d/%Y')+")", 
               xlabel="Value Delivered",ylabel="Number of Use Cases",
               legend='top_right',
               tools='hover',
               color=brewer["GnBu"][3]
              )

    issues_chart.plot_width  = DESTINATION_FRAME_WIDTH  - (HTML_BODY_MARGIN * 2)
    issues_chart.plot_height = DESTINATION_FRAME_HEIGHT - (HTML_BODY_MARGIN * 2)
    issues_chart.logo = None
    issues_chart.toolbar_location = None

    hover = issues_chart.select(dict(type=HoverTool))
    hover.tooltips = [ ("Value Delivered", "$x")]


    #--- Configure output ---
    reset_output()

    if output_mode == 'static':
        # Static file.  CDN is most space efficient
        output_file(ISSUES_FILE, title=ISSUES_TITLE, 
            autosave=False, mode='cdn', 
            root_dir=None
               )   # Generate file
        save(issues_chart,filename=ISSUES_FILE)
    elif output_mode == 'notebook':
        output_notebook()   # Show inline
        show(issues_chart)
    else:
        # Server (using internal server IP, rather than localhost or external)
        session = bokeh.session.Session(root_url = BOKEH_SERVER_IP, load_from_config=False)
        output_server("ddod_chart", session=session)
        show(issues_chart)
Exemple #4
0
def generate_single_bar(df, time_str, color_dict, colors):

	df = df[df.percent_total >= 3]
	title = "Failure Rate " + time_str
	fill = [color_dict[model_key] if model_key in color_dict else 'grey' for model_key in df.model]
	source = ColumnDataSource(dict(color=[c for c in df['color']],
		model=[m for m in df['model']],
		failure_rate=[f for f in df['failure_rate']],
		count=[co for co in df['count']]))

	plot = Bar(df, 'model', values='failure_rate', title=title, source=source, tools=['hover'],color='color', legend=None)
	# outline_line_color="color", border_fill_color='color', 
	hover = plot.select(dict(type=HoverTool))
	hover.tooltips = [
        ("Model ", "@model"),
        ("Failure rate ", "@y"),
        ("Number of drives", "@count")        #("Time ", "@timeline"),
        ]
	hover.mode = 'mouse'
	plot.xaxis.axis_label = 'Model Serial Number'
	plot.yaxis.axis_label = 'Naive Failure Rate'
	plot.title_text_font_size="18px"
	plot.grid.grid_line_alpha = 0
	plot.ygrid.grid_line_color = None
	plot.toolbar.logo = None
	plot.outline_line_width = 0
	plot.outline_line_color = "white"
	plot.plot_height = 600
	plot.plot_width = 800
	plot.xaxis.major_tick_line_color = None
	plot.yaxis.major_tick_line_color = None
	plot.xaxis.axis_line_width = 2
	plot.yaxis.axis_line_width = 2
	plot.title.text_font_size = '16pt'
	plot.xaxis.axis_label_text_font_size = "14pt"
	plot.xaxis.major_label_text_font_size = "14pt"
	plot.yaxis.axis_label_text_font_size = "14pt"
	plot.yaxis.major_label_text_font_size = "14pt"
	return(plot)