def test_Wedge(): glyph = Wedge() assert glyph.x == "x" assert glyph.y == "y" assert glyph.radius == None assert glyph.start_angle == "start_angle" assert glyph.end_angle == "end_angle" assert glyph.direction == "clock" yield check_fill, glyph yield check_line, glyph yield check_props, glyph, [ "x", "y", "radius", "start_angle", "end_angle", "direction" ], FILL, LINE
def test_Wedge() -> None: glyph = Wedge() assert glyph.x == field("x") assert glyph.y == field("y") assert glyph.radius is None assert glyph.start_angle is None assert glyph.end_angle is None assert glyph.direction == "anticlock" check_fill_properties(glyph) check_line_properties(glyph) check_properties_existence(glyph, [ "x", "y", "radius", "radius_units", "start_angle", "start_angle_units", "end_angle", "end_angle_units", "direction", ], FILL, LINE, GLYPH)
def test_Wedge(): glyph = Wedge() assert glyph.x is None assert glyph.y is None assert glyph.radius is None assert glyph.start_angle is None assert glyph.end_angle is None assert glyph.direction == "anticlock" yield check_fill_properties, glyph yield check_line_properties, glyph yield (check_properties_existence, glyph, [ "x", "y", "radius", "radius_units", "start_angle", "start_angle_units", "end_angle", "end_angle_units", "direction", ], FILL, LINE, GLYPH)
selected.loc["Other"] = aggregated[aggregated.Share < 1].sum() browsers = selected.index.tolist() radians = lambda x: 2*pi*(x/100) angles = selected.Share.map(radians).cumsum() end_angles = angles.tolist() start_angles = [0] + end_angles[:-1] browsers_source = ColumnDataSource(dict( start = start_angles, end = end_angles, colors = [colors[browser] for browser in browsers ], )) glyph = Wedge(x=0, y=0, radius=1, line_color="white", line_width=2, start_angle="start", end_angle="end", fill_color="colors") plot.add_glyph(browsers_source, glyph) def polar_to_cartesian(r, start_angles, end_angles): cartesian = lambda r, alpha: (r*cos(alpha), r*sin(alpha)) points = [] for start, end in zip(start_angles, end_angles): points.append(cartesian(r, (end + start)/2)) return zip(*points) first = True for browser, start_angle, end_angle in zip(browsers, start_angles, end_angles): versions = df[(df.Browser == browser) & (df.Share >= 0.5)]
width=screen(10), height=screen(20), angle=-0.7, fill_color="#CAB2D6")), ("segment", Segment(x0="x", y0="y", x1="xm01", y1="ym01", line_color="#F4A582", line_width=3)), ("text", Text(x="x", y="y", text=["hello"])), ("wedge", Wedge(x="x", y="y", radius=screen(15), start_angle=0.6, end_angle=4.1, fill_color="#B3DE69")), ] markers = [ ("circle", Circle(x="x", y="y", radius=0.1, fill_color="#3288BD")), ("circle_x", CircleX(x="x", y="y", size="sizes", line_color="#DD1C77", fill_color=None)), ("circle_cross", CircleCross(x="x", y="y", size="sizes", line_color="#FB8072", fill_color=None,
xdr = DataRange1d() ydr = DataRange1d() plot = Plot(title=None, x_range=xdr, y_range=ydr, plot_width=300, plot_height=300, h_symmetry=False, v_symmetry=False, min_border=0, toolbar_location=None) glyph = Wedge(x="x", y="y", radius="r", start_angle=0.6, end_angle=4.1, fill_color="#b3de69") plot.add_glyph(source, glyph) xaxis = LinearAxis() plot.add_layout(xaxis, 'below') yaxis = LinearAxis() plot.add_layout(yaxis, 'left') plot.add_layout(Grid(dimension=0, ticker=xaxis.ticker)) plot.add_layout(Grid(dimension=1, ticker=yaxis.ticker)) curdoc().add_root(plot)
def generate_single_pie(df, time_str, color_dict, colors): xdr = Range1d(start=-2, end=2) ydr = Range1d(start=-2, end=2) xoffset = .45 title = "Percent of Drive Models in use" + time_str #plot = Plot(title=title, x_range=xdr, y_range=ydr, plot_width=700, plot_height=600,tools=['hover']) plot = figure(title=title, x_range=xdr, y_range=ydr, plot_width=700, plot_height=600, tools=['hover,wheel_zoom,save']) hover = plot.select(dict(type=HoverTool)) # = plot.select(dict(type=HoverTool)) hover.tooltips = [("Model ", "@model"), ("Failure Rate ", "@failure_rate")] hover.mode = 'mouse' plot.xaxis.visible = False plot.yaxis.visible = False plot.grid.grid_line_alpha = 0 #plot.outline = None plot.outline_line_width = 0 plot.ygrid.grid_line_color = None plot.toolbar.logo = None plot.outline_line_width = 0 plot.outline_line_color = "white" aggregated = df.groupby("manufacturer").agg(sum) selected = aggregated[aggregated.percent_total >= 2].copy() selected.loc["Other"] = aggregated[aggregated.percent_total < 2].sum() browsers = selected.index.tolist() radians = lambda x: 2 * pi * (x / 100) angles = selected.percent_total.map(radians).cumsum() end_angles = angles.tolist() start_angles = [0] + end_angles[:-1] browsers_source = ColumnDataSource( dict(start=start_angles, end=end_angles, colors=[colors[browser] for browser in browsers], model=browsers, failure_rate=[f for f in selected["failure_rate"]])) glyph = Wedge(x=xoffset, y=0, radius=.8, line_color="white", line_width=2, start_angle="start", end_angle="end", fill_color="colors") plot.add_glyph(browsers_source, glyph) def polar_to_cartesian(r, start_angles, end_angles): cartesian = lambda r, alpha: (r * cos(alpha), r * sin(alpha)) points = [] for start, end in zip(start_angles, end_angles): points.append(cartesian(r, (end + start) / 2)) return zip(*points) show_wedge_percent = 1.0 show_label_percent = 1.0 n = 0 for manufac, start_angle, end_angle in zip(browsers, start_angles, end_angles): manufac_models = df[(df.manufacturer == manufac) & ( df.percent_total > show_wedge_percent)] #if it has gt than other_manufac_models = df[(df.manufacturer == manufac) & (df.percent_total <= show_wedge_percent)] other_manufac_models.model = "Other" manufac_models = manufac_models.append(other_manufac_models) manufac_models = manufac_models.reset_index().groupby("model").sum() manufac_models["model"] = manufac_models.index manufac_models = manufac_models[manufac_models.percent_total > show_wedge_percent] #if it has gt than angles = manufac_models.percent_total.map( radians).cumsum() + start_angle end = angles.tolist() + [end_angle] start = [start_angle] + end[:-1] base_color = colors[manufac] fill = [ color_dict[model_key] if model_key in color_dict else 'grey' for model_key in manufac_models.model ] text = [ modnumber if share >= show_label_percent else " " for modnumber, share in zip(manufac_models.model, manufac_models.percent_total) ] x = np.zeros(len(manufac_models)) - 1.93 y = [1.7 - .23 * h - .23 * n for h in range(len(manufac_models))] n += len(manufac_models) source = ColumnDataSource( dict(start=start, end=end, fill=fill, model=text, failure_rate=manufac_models.failure_rate)) glyph = AnnularWedge(x=xoffset, y=0, inner_radius=.8, outer_radius=1.4, start_angle="start", end_angle="end", line_color="white", line_width=2, fill_color="fill") plot.add_glyph(source, glyph) text_source = ColumnDataSource(dict(text=text, x=x, y=y, fill=fill)) labels = LabelSet(x='x', y='y', text='text', text_color= "white", level='glyph', source=text_source, \ render_mode='canvas', background_fill_color="fill", border_line_color="fill", border_line_width=8) plot.add_layout(labels) x, y = polar_to_cartesian(1.7, start_angles, end_angles) selected = selected[selected['percent_total'] > 3.5] text = ["%.02f%%" % value for value in selected.percent_total] x, y = polar_to_cartesian(0.6, start_angles, end_angles) x = [i + xoffset - .02 for i in x] text_source = ColumnDataSource(dict(text=text, x=x, y=y)) glyph = Text(x="x", y="y", text="text", text_align="center", text_baseline="middle", text_color="white") plot.add_glyph(text_source, glyph) return plot
y_offset=0, source=f1.Perm_Label_source) figure1.add_layout(figure1_labels) ### Figure 2: Define Geometry Mohr_Circle_glyph = Circle(x='x', y='y', radius='radius', radius_dimension='y', fill_color='#c3c3c3', fill_alpha=0.5) Wedge_glyph = Wedge(x="x", y="y", radius="radius", start_angle="sA", end_angle="eA", fill_color="firebrick", fill_alpha=0.6, direction="clock") ### Figure 2: Define Figure and add Geometry figure2 = figure(title=figure_texts.data['text'][5], tools="pan,save,wheel_zoom,reset", x_range=(-25.5, 25.5), y_range=(-25.5, 25.5), width=400, height=400, toolbar_location="right") figure2.add_layout( Arrow(end=NormalHead(fill_color="black", size=15), x_start=-23, y_start=0,