Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 1.65 KB

README.md

File metadata and controls

47 lines (40 loc) · 1.65 KB

gridworld-visualizer

This is a small library for visualizing gridworlds by generating svgs styled and animated by css. The api of gridworld-visualizer centers around the gridworld function.

gridworld(n=10, actions=None, tile2classes=None, extra_css="") -> SVG

which takes in the dimension of the gridworld (currently assumed to be a square n x n), the sequence of actions (currently support moving in the cardinal directions), and a function

tile2classes(x: int, y: int) -> str

which given a grid cell (x, y) returns a string for its type. Currently, the default styling supports, "water", "recharge", "dry", "lava", and "normal". As these types just correspond to css classes, one can add additional styling using the extra_css option.

Example

Below we generate the gridworld from at the top of the page, (originally from Vazquez-Chanlatte, Marcell, et al. "Learning Task Specifications from Demonstrations.").

import gridworld_visualizer as gv


def tile2classes(x, y):
    if (3 <= x <= 4) and (2 <= y <= 5):
        return "water"
    elif (x in (0, 7)) and (y in (0, 7)):
        return "recharge"
    elif (2 <= x <= 5) and y in (0, 7):
        return "dry"
    elif x in (1, 6) and (y in (4, 5) or y <= 1):
        return "lava"
    elif (x in (0, 7)) and (y in (1, 4, 5)):
        return "lava"

    return "normal"

actions = [gv.E, gv.N, gv.N, gv.N, gv.N, gv.W, gv.W, gv.W]
svg = gv.gridworld(n=8, tile2classes=tile2classes, actions=actions)
svg.saveas("example.svg", pretty=True)