def modify_doc():
    def make_dataset(range_start=-60, range_end=120, bin_width=2):

        by_code_pos = pd.DataFrame(
            columns=['mortality_change', 'state', 'cause'])
        by_code_neg = pd.DataFrame(
            columns=['mortality_change', 'state', 'cause'])

        data_gender = full_data[full_data['sex'] == "Both"]

        for state in state_select_down:

            pos_perc_change = []
            neg_perc_change = []
            cause_pos_name = []
            cause_neg_name = []
            len_pos = 0
            len_neg = 0

            for cause in cause_select_down:

                data_state = data_gender[data_gender['location_name'] == state]
                data_cause = data_state[data_state['cause_name'] == cause]

                subset = data_cause[data_cause['year_id'] == 1980]
                mortality_1980 = subset['mx'].astype(float)
                mortality_1980 = mortality_1980.values[0]

                subset = data_cause[data_cause['year_id'] == 2014]
                mortality_2014 = subset['mx'].astype(float)
                mortality_2014 = mortality_2014.values[0]

                perc_change = (
                    (mortality_2014 - mortality_1980) / mortality_1980) * 100

                if perc_change <= 0:
                    arr_df_neg = pd.DataFrame(
                        {'mortality_change': subset['mx']})
                    arr_df_neg['mortality_change'] = perc_change * (-1)
                    arr_df_neg['state'] = state
                    arr_df_neg['cause'] = cause
                    by_code_neg = by_code_neg.append(arr_df_neg)
                else:
                    arr_df_pos = pd.DataFrame(
                        {'mortality_change': subset['mx']})
                    arr_df_pos['mortality_change'] = perc_change
                    arr_df_pos['state'] = state
                    arr_df_pos['cause'] = cause
                    by_code_pos = by_code_pos.append(arr_df_pos)

        return by_code_pos, ColumnDataSource(
            by_code_pos), by_code_neg, ColumnDataSource(by_code_neg)

    def make_plot(df, src):

        mapper = LinearColorMapper(palette=colors_list,
                                   low=df.mortality_change.min(),
                                   high=df.mortality_change.max())

        heat_map = figure(plot_height=500,
                          plot_width=1000,
                          x_range=state_select_down,
                          y_range=cause_select_down)
        heat_map.rect(x="state",
                      y="cause",
                      source=src,
                      width=1,
                      height=1,
                      line_color=None,
                      fill_color=transform('mortality_change', mapper))

        color_bar = ColorBar(color_mapper=mapper, location=(0, 0))
        heat_map.add_layout(color_bar, 'right')

        heat_map.axis.axis_line_color = None
        heat_map.axis.major_tick_line_color = None
        heat_map.axis.major_label_text_font_size = "5pt"
        heat_map.axis.major_label_standoff = 0
        heat_map.xaxis.major_label_orientation = 1.0
        heat_map.xaxis.major_label_orientation = math.pi / 2
        heat_map.xaxis.axis_label = "State"
        heat_map.yaxis.axis_label = "Cause"

        hover_bar = HoverTool(tooltips=[('State', '@state'), (
            'Cause', '@cause'), ('Mortality Rate Change',
                                 '@mortality_change')])
        heat_map.add_tools(hover_bar)

        return heat_map

    df_pos, src_pos, df_neg, src_neg = make_dataset()

    heat_map_pos = make_plot(df_pos, src_pos)
    title_pos = Title()
    title_pos.align = "center"
    title_pos.text = "Figure 2(a). Causes having positive change in Mortality Rates between 1980 and 2014"
    title_pos.vertical_align = 'bottom'
    heat_map_pos.title = title_pos

    heat_map_neg = make_plot(df_neg, src_neg)
    title_neg = Title()
    title_neg.align = "center"
    title_neg.text = "Figure 2(b). Causes having negative change in Mortality Rates between 1980 and 2014"
    title_neg.vertical_align = 'bottom'
    heat_map_neg.title = title_neg

    return column(heat_map_pos, heat_map_neg)
Exemplo n.º 2
0
def plot_violin(
    ax,
    plotters,
    figsize,
    rows,
    cols,
    sharex,
    sharey,
    shade_kwargs,
    shade,
    rug,
    rug_kwargs,
    bw,
    textsize,
    circular,
    hdi_prob,
    quartiles,
    backend_kwargs,
    show,
):
    """Bokeh violin plot."""
    if backend_kwargs is None:
        backend_kwargs = {}

    backend_kwargs = {
        **backend_kwarg_defaults(("dpi", "plot.bokeh.figure.dpi"), ),
        **backend_kwargs,
    }
    (figsize, *_, linewidth, _) = _scale_fig_size(figsize, textsize, rows,
                                                  cols)

    shade_kwargs = {} if shade_kwargs is None else shade_kwargs
    rug_kwargs = {} if rug_kwargs is None else rug_kwargs
    rug_kwargs.setdefault("fill_alpha", 0.1)
    rug_kwargs.setdefault("line_alpha", 0.1)
    if ax is None:
        ax = create_axes_grid(
            len(plotters),
            rows,
            cols,
            sharex=sharex,
            sharey=sharey,
            figsize=figsize,
            backend_kwargs=backend_kwargs,
        )
    else:
        ax = np.atleast_2d(ax)

    current_col = 0
    for (var_name, selection,
         x), ax_ in zip(plotters,
                        (item for item in ax.flatten() if item is not None)):
        val = x.flatten()
        if val[0].dtype.kind == "i":
            dens = cat_hist(val, rug, shade, ax_, **shade_kwargs)
        else:
            dens = _violinplot(val, rug, shade, bw, circular, ax_,
                               **shade_kwargs)

        if rug:
            rug_x = -np.abs(
                np.random.normal(scale=max(dens) / 3.5, size=len(val)))
            ax_.scatter(rug_x, val, **rug_kwargs)

        per = np.nanpercentile(val, [25, 75, 50])
        hdi_probs = hdi(val, hdi_prob, multimodal=False, skipna=True)

        if quartiles:
            ax_.line([0, 0],
                     per[:2],
                     line_width=linewidth * 3,
                     line_color="black",
                     line_cap="round")
        ax_.line([0, 0],
                 hdi_probs,
                 line_width=linewidth,
                 line_color="black",
                 line_cap="round")
        ax_.circle(
            0,
            per[-1],
            line_color="white",
            fill_color="white",
            size=linewidth * 1.5,
            line_width=linewidth,
        )

        _title = Title()
        _title.align = "center"
        _title.text = make_label(var_name, selection)
        ax_.title = _title
        ax_.xaxis.major_tick_line_color = None
        ax_.xaxis.minor_tick_line_color = None
        ax_.xaxis.major_label_text_font_size = "0pt"
        if current_col != 0:
            ax_.xaxis.major_label_text_font_size = "0pt"
            ax_.yaxis.major_label_text_font_size = "0pt"
            ax_.yaxis.major_tick_line_color = None
            ax_.yaxis.minor_tick_line_color = None
            ax_.yaxis.axis_line_color = None
        current_col += 1
        if current_col == cols:
            current_col = 0

    show_layout(ax, show)

    return ax
df = data.DataReader(
    name='amzn', data_source='yahoo', start=start,
    end=end)  #The analyzed entity is Amazon,in the last 6 months

p = figure(x_axis_type='datetime',
           width=1000,
           height=300,
           sizing_mode="scale_width")

t = Title()
t.text = "Candlestick Chart"
p.title = t
p.grid.grid_line_alpha = 0.6
t.text_font_size = "24pt"  # defining the css of the title
t.align = "center"
date_increase = df.index[df.Close > df.Open]
date_decrease = df.index[df.Close < df.Open]
p.segment(df.index, df.High, df.index, df.Low, color="black")
p.rect(date_increase, (df.Close + df.Open) / 2,
       hours_12,
       abs(df.Open - df.Close),
       fill_color="green",
       line_color="black")
p.rect(date_decrease, (df.Close + df.Open) / 2,
       hours_12,
       abs(df.Open - df.Close),
       fill_color="red",
       line_color="black")
output_file("CS.html")
show(p)