예제 #1
0
def render_animation(name, func1, func2, circuit_qcircuit='', equation_latex='',
                     save=False, fps=20, preview=True, **kwargs):
    with draw.animation.AnimationContext(animate_bloch.draw_frame,
                                         jupyter=preview, delay=0
                                        ) as anim:
        state = animate_bloch.AnimState(anim, fps=fps)
        func1(state)
    frames1 = anim.frames

    with draw.animation.AnimationContext(animate_bloch.draw_frame,
                                         jupyter=preview, delay=0
                                        ) as anim:
        state = animate_bloch.AnimState(anim, fps=fps)
        func2(state)
    frames2 = anim.frames

    g = draw.Group()
    # Equals sign
    g.append(draw.Rectangle(-0.4, 0.075, 0.8, 0.075, fill='#000'))
    g.append(draw.Rectangle(-0.4, -0.15, 0.8, 0.075, fill='#000'))
    if circuit_qcircuit:
        circuit_elem = latextools.render_qcircuit(circuit_qcircuit).as_svg()
        g.draw(circuit_elem, x=0, y=2, center=True, scale=0.04)
    if equation_latex:
        equation_elem = latextools.render_snippet(
            equation_latex, latextools.pkg.qcircuit).as_svg()
        g.draw(equation_elem, x=0, y=-0.8, center=True, scale=0.03)
    extra_elements = (g,)

    save_side_by_side(name, frames1, frames2, extra_elements=extra_elements,
                      save=save, fps=fps, preview=preview, **kwargs)
def draw_frame(t):
    d = draw.Drawing(2, 5.00, origin=(-1, -1.05))
    d.setRenderSize(h=150)
    d.append(draw.Rectangle(-4, -4, 8, 10, fill='white'))
    d.append(draw.Rectangle(-1, -1.00, 8, 1.05, fill='brown'))
    t = (t + 1) % 2 - 1
    y = 4 - t**2 * 4
    d.append(draw.Circle(0, y, 1, fill='lime'))
    return d
예제 #3
0
    def draw(self, x=0, y=0, xscale=1.0):
        h = self.h
        a = self.a * xscale
        b = self.b * xscale
        x = x * xscale

        #assert isinstance(x, float) and isinstance(y, float)
        d = draw.Group(transform="translate({} {})".format(x, y))
        d.append(
            draw.Rectangle(a, 0, b - a, h, fill=self.color, stroke=self.color))

        if 'f' in self.direction:
            d.append(
                draw.Lines(b,
                           0,
                           b + 5, (h / 2),
                           b,
                           h,
                           fill=self.color,
                           stroke=self.color))
        if 'r' in self.direction:
            d.append(
                draw.Lines(a,
                           0,
                           a - 5, (h / 2),
                           a,
                           h,
                           fill=self.color,
                           stroke=self.color))

        for r_a, r_b, color in self.regions:
            r_a = r_a * xscale
            r_b = r_b * xscale
            d.append(
                draw.Rectangle(r_a, 0, r_b - r_a, h, fill=color, stroke=color))

        for tick in self.ticks:
            tick = tick * xscale
            d.append(draw.Lines(tick, 0, tick, h, stroke='red'))

        if self.label:
            label = self.label
            font_size = 10
            offset = h + font_size
            if isinstance(self.label, Label):
                d.append(label.draw(x=(b + a) / 2))
            elif isinstance(self.label, str):
                d.append(Label(0, self.label).draw(x=(b + a) / 2))
        return d
예제 #4
0
 def draw_line(self, dims, vals, grid_size=10, color='#ffffff'):
     anim = draw.Drawing(330, 120, origin=(0, 0))
     for x in range(dims[0]):
         group = draw.Group()
         group.draw(
             draw.Rectangle(
                 100 * x + grid_size,  # origin x coords
                 grid_size,  # origin y coords
                 100,  # grid width
                 100,  # grid height
                 stroke_width=grid_size,  # outline size
                 stroke='black',  # outline color
                 fill=color))  # fill color
         string_output = str(vals[x])
         font_size = 50 / len(string_output) + 25
         group.draw(
             draw.Text(
                 string_output,
                 font_size,
                 100 * x + grid_size + font_size / 3 +
                 2 * len(string_output),  # origin x coords
                 grid_size + 2250 / (font_size + 20),  # origin y coords
                 center=0))
         anim.append(group)
     return anim
def draw_pads(board_data, d, data, factor):
    for index, element in data.iterrows():
        red = element['MEAS_3_CLAMPED']
        green = element['MEAS_5_CLAMPED']
        blue = element['MEAS_6_CLAMPED']
        color = rgb_to_hex((int(red / 4), int(green), int(blue)))
        part_name = element.name[0]
        pad_index = str(element.name[1])
        part = board_data[part_name + '_' + pad_index]
        element_x = float(part[5]) * factor
        element_y = float(part[6]) * factor

        pad_width = float(part[8]) * factor
        pad_length = float(part[7]) * factor

        rot_angle = int(part[9])

        rotation = str.format("translate({1}, {2}) rotate({0})",
                              str(-rot_angle), str(element_x), str(-element_y))

        d.append(
            drawSvg.Rectangle(-pad_width / 2,
                              -pad_length / 2,
                              pad_width,
                              pad_length,
                              stroke_width=1,
                              stroke="black",
                              fill=color,
                              transform=rotation))
예제 #6
0
 def drawlayOut(self):
     self.d.append(
         draw.Rectangle(0,
                        0,
                        self.widthView,
                        self.heightView,
                        fill='#ffffff'))
예제 #7
0
def draw_keyboard(keyboard_or_index: Union[int, Keyboard]) -> draw.Group:
    keyboard: Keyboard = keyboards[keyboard_or_index] if isinstance(
        keyboard_or_index, int) else keyboard_or_index

    outlines = draw.Group(
        transform=f"translate({-keyboard.left},{-keyboard.top})")
    chars = draw.Group(transform="scale(1,-1)")

    for key in keyboard.values():
        outlines.append(
            draw.Rectangle(key.x,
                           key.y,
                           key.width,
                           key.height,
                           fill='transparent',
                           stroke_width=5,
                           stroke='blue'))
        if key.code > 0:
            chars.append(
                draw.Text(key.char,
                          fontSize=25,
                          x=key.x + key.width / 2,
                          y=-key.y - key.height / 2,
                          center=True))

    outlines.append(chars)
    return outlines
예제 #8
0
def draw_points(pts,
                name,
                bg_margin_ratio,
                bg_col='#1248ff',
                path_kwargs=def_path_kwargs):
    """
    Draws a path connecting the points and saves
    it as a svg image.
    """

    n = pts.shape[1]
    p = draw.Path(**path_kwargs)
    p.M(*pts[:, -1])
    for k in range(n):
        p.L(*pts[:, k])
    p.Z()

    # Background
    sz_half = int(bg_margin_ratio * np.max(np.abs(pts)))
    sz = 2 * sz_half
    bg_rect = draw.Rectangle(-sz_half, -sz_half, sz, sz, fill=bg_col)

    # Draw
    d = draw.Drawing(sz, sz, origin='center')
    d.append(bg_rect)
    d.append(p)

    # Save
    save_path = get_img_path(name)
    d.saveSvg(save_path)
def draw_via_pads(d, via_list, factor):
    for via_name, via in via_list:
        via_x = float(via.x) * factor
        via_y = float(via.y) * factor

        via_length = float(via.length) * factor
        via_width = float(via.width) * factor

        via_drill = float(via.drill) * factor

        rotation = str.format("translate({1}, {2}) rotate({0}) ",
                              str(-via.rotation), str(via_x), str(-via_y))

        color = "lightgreen"
        d.append(
            draw.Rectangle(-via_width / 2,
                           -via_drill / 2 - 0.25 * factor,
                           via_width,
                           via_length,
                           fill=color,
                           stroke_width=1,
                           stroke="black",
                           opacity="0.7",
                           transform=rotation,
                           rx=via_width / 2,
                           ry=via_width / 2))
        d.append(
            draw.Circle(via_x,
                        via_y,
                        via_drill / 2,
                        fill="orange",
                        stroke_width=1,
                        stroke="black",
                        opacity="0.7"))
def generate_svg(root_image_path, svg_save_path):
    with open(os.path.join(root_image_path, "draw_objects.pickle"), 'rb') as f:
        draw_objects = pickle.load(f)

        canvas_shape = (0, 0
                        )  # automatically find the shape through maximizing
        for draw_object in draw_objects:
            points = draw_object["points"]
            canvas_shape = np.maximum(canvas_shape, points.max(axis=0))
        canvas_shape = canvas_shape.astype(np.int)

        image = draw.Drawing(*canvas_shape, displayInline=False)
        image.append(draw.Rectangle(0, 0, *canvas_shape, fill='black'))

        # shuffle(draw_objects) # don't shuffle the polygons :), they are overlaid over each other
        for idx, draw_object in enumerate(draw_objects):
            polygon = draw_object["points"]
            color = draw_object["color"]
            polygon = polygon.astype(np.int)
            color = color.astype(np.int)
            color = color.tolist()
            BGR, alpha = color[:-1], color[-1] / MAX_COLOR

            draw_svg_polygon(image, polygon, BGR, alpha)

        temp_svg = "/tmp/temp.svg"
        image.saveSvg(temp_svg)
        drawing = svg2rlg(temp_svg)
        os.remove(temp_svg)

        drawing.transform = (1, 0, 0, -1, 0, canvas_shape[1]
                             )  # reflect and translate

        renderPDF.drawToFile(drawing, svg_save_path)
예제 #11
0
파일: render.py 프로젝트: Tokenibis/tools
def render(circles, data, size, highlight=[], output='circles.svg'):
    d = draw.Drawing(size, size, origin='center')
    d.append(draw.Rectangle(
        -size / 2,
        -size / 2,
        size,
        size,
        fill='white',
    ))

    for i, item in enumerate(zip(circles, data)):
        circle = item[0]

        if item[1][1] > 0:
            color = '#3b3b3b'
        else:
            if item[1][0] and item[1][0] in highlight:
                color = '#ffff00'
            else:
                color = '#84ab3f'

        d.append(
            draw.Circle(
                *circle,
                fill=color,
                amount=item[1][1],
                person=html.escape(item[1][0]),
                target=html.escape(item[1][2]) if len(item[1]) >= 4 else '',
                description=html.escape(item[1][3])
                if len(item[1]) >= 4 else '',
            ))

    d.saveSvg(output)
예제 #12
0
def test_draw_coverage(svg_differ):
    expected_figure = Figure()
    expected_figure.add(Track(0, 1, color='', h=-4))  # Just a spacer.
    expected_figure.add(Track(100, 200, label='Bar'))
    expected_svg = expected_figure.show()
    expected_svg.insert(0, draw.Rectangle(100, 20, 25, 5, fill='blue'))
    expected_svg.insert(1, draw.Rectangle(125, 20, 25, 10, fill='blue'))
    expected_svg.insert(2, draw.Rectangle(175, 20, 25, 1, fill='blue'))

    figure = Figure()
    coverage_depths = 25 * [5] + 25 * [10] + 25 * [0] + 25 * [1]
    figure.add(SmoothCoverage(100, 200, coverage_depths), gap=-4)
    figure.add(Track(100, 200, label="Bar"))

    svg = figure.show()

    svg_differ.assert_equal(svg, expected_svg, 'test_draw_coverage')
예제 #13
0
def render_rect(rect, model, target, style=None):
    style = style_join(style or {}, rect.style)
    assert len(style) > 0
    w = N(model[rect.width])
    h = N(model[rect.height])
    x = N(model[rect.x])
    y = M(model[rect.y], target) - h
    target.append(draw.Rectangle(x, y, w, h, **style))
예제 #14
0
 def draw_green_pixel(self, x, y, a=0.2):
     r = draw.Rectangle(round(x),
                        round(-y + self.dimension - 1),
                        1,
                        1,
                        fill="green",
                        fill_opacity=a)
     self.draw.append(r)
예제 #15
0
def create_tria_svg():
    """
    Creates the fancy triangular shape and saves
    it as a .svg image.
    """

    # Parameters 
    d_0 = 0.3
    d_1 = 0.4
    f = 0.43
    alpha = 54
    s = 300
    bg_col = '#1248ff'
    fg_col = '#000000'
    name = 'fancy_tria'

    # Compute triangles
    main_tria = get_iso_tria(s)
    inner_tria = get_iso_tria(f * s, -alpha)

    # Draw
    sz = 800
    d = draw.Drawing(sz, sz, origin='center')

    # Background
    bg_rect = draw.Rectangle(-sz / 2, -sz / 2, sz, sz, fill=bg_col)
    d.append(bg_rect)

    p = draw.Path(stroke_width=0, 
                  stroke=fg_col,
                  fill=fg_col, 
                  fill_opacity=1.0)

    prev_corner = main_tria[:, -1]
    p.M(*prev_corner)
    for k in range(3):

        # Compute points
        curr_corner = main_tria[:, k]
        side_vec = curr_corner - prev_corner
        side_pt1 = prev_corner + d_0 * side_vec
        side_pt2 = prev_corner + (1 - d_1) * side_vec
        inner_pt = inner_tria[:, (k + 1) % 3]

        # Draw points
        p.L(*side_pt1)
        p.L(*inner_pt)
        p.L(*side_pt2)
        p.L(*curr_corner)

        prev_corner = curr_corner

    p.Z()
    d.append(p)

    # Save
    save_path = get_img_path(name)
    d.saveSvg(save_path)
예제 #16
0
def draw_frame(*args, background='white', **kwargs):
    d = draw.Drawing(5, 3, origin='center')
    d.setRenderSize(624)
    if background:
        d.append(draw.Rectangle(-100, -100, 200, 200, fill=background))

    g = draw.Group()
    draw_bloch_sphere(g, background=None, *args, **kwargs)
    d.append(g)
    return d
예제 #17
0
def draw_whole_frame(f1, f2, background='white', extra_elements=()):
    d = draw.Drawing(10, 4, origin=(-5, -1.5))
    d.setRenderSize(624 * 2)
    if background:
        d.append(draw.Rectangle(-100, -100, 200, 200, fill=background))

    d.append(draw.Group([f1.elements[-1]], transform='translate(-2.5)'))
    d.append(draw.Group([f2.elements[-1]], transform='translate(2.5)'))

    d.extend(extra_elements)
    return d
예제 #18
0
 def draw_pixel(self, x, y, c):
     x = round(x)
     y = round(y)
     self.image[x][y] = c
     r = draw.Rectangle(x,
                        -y + self.dimension - 1,
                        1,
                        1,
                        fill=c.to_hex(),
                        fill_opacity=c.a)
     self.draw.append(r)
예제 #19
0
    def generateBoundingBox(self):
        boxWidth = self.rightBound - self.leftBound + self.boxThickness
        boxHeight = self.topBound - self.bottomBound + self.boxThickness

        return draw.Rectangle(self.leftBound - (self.boxThickness / 2),
                              self.bottomBound - (self.boxThickness / 2),
                              boxWidth,
                              boxHeight,
                              fill_opacity=0,
                              stroke_width=self.boxThickness,
                              stroke=self.boxColor)
예제 #20
0
def drawRect(d, x, y, color):
    d.append(draw.Rectangle(
        x,
        y,
        9,
        9,
        fill=color,
    ))
    d.setPixelScale(2)  # Set number of pixels per geometry unit
    # Display in Jupyter notebook
    d.rasterize()  # Display as PNG
    return d  # Display as SVG
def setup():
    if not os.path.exists(OUTPUT_DIR):
        os.makedirs(OUTPUT_DIR)
    if not os.path.exists(TEMP_DIR):
        os.makedirs(TEMP_DIR)

    background_top = INPUT_DIR + "axiom_beta_mixed_panel.top_rotated.png"
    background_bottom = INPUT_DIR + "axiom_beta_mixed_panel.bottom_rotated.png"

    board_x = 0
    board_y = 0

    board_outline = gerberex.read('output_stage1/axiom_beta_mixed_panel.boardoutline.ger')

    board_width = board_outline.size[1]
    board_height = board_outline.size[0]

    image_width, image_height = get_image_size(background_top)

    global drawing_top, drawing_bottom, factor, output_image_height

    output_image_width = image_width / 2
    output_image_height = image_height / 2

    factor = (output_image_width / board_width + output_image_height / board_height) / 2

    # Fixed size for PCB image
    drawing_top = draw.Drawing(output_image_width, output_image_height)
    drawing_bottom = draw.Drawing(output_image_width, output_image_height)

    # Draw background
    drawing_top.append(draw.Image(board_x * factor, board_y * factor,
                                  output_image_width, output_image_height, background_top))

    drawing_top.append(draw.Rectangle(0, 0, output_image_width, output_image_height, fill="black", opacity=0.5))

    drawing_bottom.append(draw.Image(board_x * factor, board_y * factor,
                                     output_image_width, output_image_height, background_bottom))

    drawing_bottom.append(draw.Rectangle(0, 0, output_image_width, output_image_height, fill="black", opacity=0.5))
예제 #22
0
    def drawColumn(self,add,colors,columnCounter,j,cell):

      x = abs(add + self.FindYofRightEdgeOFCoulumn(j)) + self.widthOfSingleColumn
      y = abs(self.convertY(self.findZeroInSVG()))
      width = abs((add + self.FindYofRightEdgeOFCoulumn(j)) - (add + self.FindYofLeftEdgeOFCoulumn(j)))
      height = self.convertY(cell.value) - self.convertY(self.findZeroInSVG())
      if self.animation:
        if height > -1:
          t = draw.Rectangle(x, y + height, width, height, stroke=colors[columnCounter], stroke_width=self.xUnit / 60,
                            Class=str(self.Index), id=self.Index,

                            transform="rotate(180," + str(x) + ',' + str(-abs(y + height)) + ')',
                            fill=colors[columnCounter], fill_opacity=0.5)
          t.appendAnim(draw.Animate('height', '1s', from_or_values=0, to=height,

                                   repeatCount='1'))
          self.d.append(t)
        else:
          t = draw.Rectangle(x - self.widthOfSingleColumn, y - abs(height), width, abs(height), Class=str(self.Index),
                            id=self.Index,
                            stroke=colors[columnCounter],
                            stroke_width=self.xUnit / 30,
                            fill=colors[columnCounter], fill_opacity=0.5)
          t.appendAnim(draw.Animate('height', '1s', from_or_values=0, to=abs(height),

                                   repeatCount='1'))
          self.d.append(t)
      else:
        if height > -1:
          r = draw.Rectangle(x, y + height, width, height, stroke=colors[columnCounter], stroke_width=self.xUnit / 60,Class=str(self.Index),id=self.Index,
                           transform="rotate(180," + str(x) + ',' + str(-abs(y + height)) + ')',
                           fill=colors[columnCounter], fill_opacity=0.5)
          self.d.append(r)
        else:
          r = draw.Rectangle(x - self.widthOfSingleColumn, y - abs(height), width, abs(height),Class=str(self.Index),id=self.Index,
                           stroke=colors[columnCounter],
                           stroke_width=self.xUnit / 30,
                           fill=colors[columnCounter], fill_opacity=0.5)
          self.d.append(r)
예제 #23
0
    def saveMap(self,Id_env,list_obstacle):
        num_obstacle = len(list_obstacle)
        map_data = np.zeros([self.size_load_map[0], self.size_load_map[1]])


        aspect = self.size_load_map[0] / self.size_load_map[1]
        xmin = -0.5
        ymin = -0.5
        xmax = self.size_load_map[0] - 0.5
        ymax = self.size_load_map[1] - 0.5



        d = draw.Drawing(self.size_load_map[0], self.size_load_map[1], origin=(xmin,ymin))
        # d.append(draw.Rectangle(xmin, ymin, self.size_load_map[0], self.size_load_map[1], stroke='black',fill = 'white'))
        # d.append(draw.Rectangle(xmin, ymin, xmax, ymax, stroke_width=0.1, stroke='black', fill='white'))
        d.append(draw.Rectangle(xmin, ymin, self.size_load_map[0], self.size_load_map[1], stroke_width=0.1, stroke='black', fill='white'))

        # d = draw.Drawing(self.size_load_map[0], self.size_load_map[1], origin=(0, 0))
        # d.append(draw.Rectangle(0, 0, self.size_load_map[0], self.size_load_map[1], stroke_width=0, stroke='black', fill='white'))

        for ID_obs in range(num_obstacle):
            obstacleIndexX = list_obstacle[ID_obs][0]
            obstacleIndexY = list_obstacle[ID_obs][1]
            map_data[obstacleIndexX][obstacleIndexY] = 1
            d.append(draw.Rectangle(obstacleIndexY-0.5, obstacleIndexX-0.5, 1, 1, stroke='black', stroke_width=0, fill='black'))
            # d.append(draw.Rectangle(obstacleIndexX, obstacleIndexY, 0.5, 0.5, stroke='black', fill='black'))
            # d.append(draw.Rectangle(obstacleIndexX - 0.5, obstacleIndexY - 0.5, 1, 1, stroke='black', stroke_width=1,
            #                         fill='black'))

        # setup figure
        name_map = os.path.join(self.dirName_mapSet, 'IDMap{:05d}.png'.format(Id_env))

        # d.setPixelScale(2)  # Set number of pixels per geometry unit
        d.setRenderSize(200, 200)  # Alternative to setPixelScale
        d.savePng(name_map)
예제 #24
0
 def draw(self, x=0, y=0, xscale=1.0):
     a = self.a * xscale
     x = x * xscale
     d = draw.Group(transform="translate({} {})".format(x, y))
     yscale = self.h / max(y for y, count in self.coverage_groups)
     pos = 0
     for y, count in self.coverage_groups:
         if y != 0:
             d.append(
                 draw.Rectangle(a + (pos * xscale),
                                self.h // 2 - 1,
                                count * xscale,
                                y * yscale,
                                fill=self.get_color(y),
                                fill_opacity=self.opacity,
                                shape_rendering='crispEdges'))
         pos += count
     return d
예제 #25
0
 def draw(self, x=0, y=0, xscale=1.0):
     #assert isinstance(x, int) and isinstance(y, int)
     h = self.h
     a = self.a * xscale
     b = self.b * xscale
     x = x * xscale
     d = draw.Group(transform="translate({} {})".format(x, y))
     yscale = self.h / max(self.ys)
     for i, v in enumerate(self.ys):
         d.append(
             draw.Rectangle(
                 a + (i * xscale),
                 0,
                 xscale,
                 v * yscale,
                 fill=self.color,
                 fill_opacity=self.opacity))  #, stroke=self.color))
     return d
예제 #26
0
def draw_event(d, event):
    # Monday is 0 and Sunday is 6
    start_x_pos = event.start_datetime().weekday() * COL_WIDTH
    start_y_pos = COL_HEIGHT - (event.start_hour_decimal() - 10) * HOUR_HEIGHT
    end_y_pos = COL_HEIGHT - (event.end_hour_decimal() - 10) * HOUR_HEIGHT
    height = event.hour_duration_decimal() * HOUR_HEIGHT
    rect = draw.Rectangle(start_x_pos,
                          end_y_pos,
                          COL_WIDTH,
                          height,
                          fill=GREEN)
    text = draw.Text('busy',
                     10,
                     start_x_pos + 5,
                     start_y_pos - 10,
                     center=0,
                     fill='white')
    d.append(rect)
    d.append(text)
def draw_smd_pads(d, smd_list, factor):
    for pad_name, pad in smd_list:
        pad_x = float(pad.x) * factor
        pad_y = float(pad.y) * factor

        pad_width = float(pad.width) * factor
        pad_length = float(pad.length) * factor

        # rotation=str.format(
        #    "translate({0}, {1})", str(pad_x), str(-pad_y))
        rotation = str.format("translate({1}, {2}) rotate({0})",
                              str(-pad.rotation), str(pad_x), str(-pad_y))

        fill_color = "lightskyblue"

        d.append(
            draw.Rectangle(-pad_width / 2,
                           -pad_length / 2,
                           pad_width,
                           pad_length,
                           stroke_width=1,
                           stroke="black",
                           fill=fill_color,
                           transform=rotation))

        # Draw midpoint
        color = "red"  # if item.rotation != 45 else "yellow"
        radius = pad_width / 2 if pad_width < pad_length else pad_length / 2
        d.append(
            draw.Circle(pad_x,
                        pad_y,
                        radius / 2,
                        fill=color,
                        stroke_width=1,
                        stroke="black"))
        d.append(
            draw.Text(pad_name,
                      30,
                      pad_x,
                      pad_y,
                      fill="yellow",
                      stroke="orange"))
예제 #28
0
def draw_days(d):
    for day_num, day_name in enumerate([
            'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday',
            'Sunday'
    ]):
        x_pos = day_num * COL_WIDTH
        r = draw.Rectangle(x_pos,
                           COL_HEIGHT,
                           COL_WIDTH,
                           BANNER_HEIGHT,
                           fill='black',
                           stroke='white')
        t = draw.Text(day_name,
                      10,
                      x_pos + 5,
                      COL_HEIGHT + 5,
                      center=0,
                      fill='white')
        d.append(r)
        d.append(t)
예제 #29
0
    def AnimateForward(self, url):

        total_frames = 200

        d = self.d
        p = draw.Rectangle(0,
                           0,
                           self.width,
                           self.height,
                           fill="black",
                           id="Square")
        d.append(p)

        def draw_frame(i):
            std.d.elements[-1].args["y"] += (self.height / total_frames)
            #d.setRenderSize(h=self.height)
            #d.saveSvg(url)
            return (d)

        with draw.animate_jupyter(draw_frame, delay=0.05) as anim:
            for i in range(total_frames):
                anim.draw_frame(i)
예제 #30
0
    def __init__(self,
                 treefile,
                 eventsfile,
                 height,
                 width,
                 padding=15,
                 background=None):

        self.height = height
        self.width = width
        self.padding = padding
        self.branch2features, self.n_leaves, self.total_time = self._read_eventsfile(
            eventsfile)
        self.tree = self._read_treefile(treefile)
        self.node2coor = self._get_coordinates()
        self.d = draw.Drawing(self.width,
                              self.height,
                              origin=(0, 0),
                              displayInline=False)

        if background != None:
            self.d.draw(draw.Rectangle(0, 0, width, height, fill=background))