I couldn’t find a library to draw simple state transition diagrams for Markov Chains in Python – and had a couple of days off – so I made my own. The code only works with 2 to 4 state transition matrices, which was enough for what I needed, but feel free to contribute and improve upon it ðŸ™‚

**UPDATE:** An updated version of this post is now available **>> here <<.**

### Installation

You can clone the repo, or simply copy the files node.py and markovchain.py in the same directory as your script.Â

### Two-State Transition Diagram

import numpy as np import matplotlib.pyplot as plt # Import the MarkovChain class from markovchain.py from markovchain import MarkovChain P = np.array([[0.8, 0.2], [0.1, 0.9]]) # Transition matrix mc = MarkovChain(P, ['1', '2']) mc.draw()

Will plot this

### Three-State Transition Diagram

P = np.array([ [0.8, 0.1, 0.1], [0.1, 0.7, 0.2], [0.1, 0.7, 0.2], ]) mc = MarkovChain(P, ['A', 'B', 'C']) mc.draw()

### Four-State Transition Diagram

P = np.array([ [0.8, 0.1, 0.1, 0.0], [0.1, 0.7, 0.0, 0.2], [0.1, 0.0, 0.7, 0.2], [0.1, 0.0, 0.7, 0.2] ]) mc = MarkovChain(P, ['1', '2', '3', '4']) mc.draw("../img/markov-chain-four-states.png")

Â

Full demo available here.