Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time
November 13, 2020 20:32
July 22, 2021 19:28
November 13, 2020 16:15
November 13, 2020 16:15
July 22, 2021 19:22


Bringing Wardley Map magic to Jupyter notebooks

PyPI version


This plugin makes it easy to generate Wardley Maps using Jupyter Notebooks.

It supports a subset of the syntax defined by the Online Wardley Maps service. This simple language can be use to specify the map via the %%wardley cell magic.

Try it out!

Run on Binder or Open In Colab


First, install Jupyter. Then before running it, install ipywardley. e.g. if you are using pip:

pip install ipywardley

Then, run Jupyter:



Open up a new Python 3 notebook, and use this command to enable the module:

%load_ext ipywardley

Now you can use the %%wardley directive and create maps. See this example notebook for a detailed example of how to do this.



To Do

  • Support more of the OWM syntax and features (?=maybe?):
    • evolution Novel->Emerging->Good->Best and evolution X offering the different sets of x-axis labels.
    • y-axis Value Chain->Invisible->Visible or y-axis none to make 'Visibility' axis optional.
    • evolve
    • annotation & annotations?
    • note?
    • market nodes?
    • pipeline nodes?
    • node inertia?
    • +<>, +>, +< links to indicate flow?
    • Hot Water+'$0.10'>Kettle flow labels?
    • build, buy, outsource node augmentation?
    • submap and related syntax?
    • pioneer, settler, townplanner areas/boxes?
  • Add 'Uncharted' and 'Industrialised' labels
  • Support rendering from a file, via e.g. %wardley file=example.owm style=plain
  • Make it easier to download the SVG/rendered version?


  1. Clone this directory.
  2. Set up a virtualenv and activate it.
  3. Modify the code.
  4. Run flit install
  5. Run jupyter-lab and test your changes.
  6. Repeat 3-5 ad infinitum.
  7. Turn your changes into a pull request.