Пример #1
0
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
Пример #2
0
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)
Пример #3
0
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)
Пример #4
0
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)]
Пример #5
0
          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,
Пример #6
0
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)
Пример #7
0
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
Пример #8
0
                               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,