You’ve got to love the open-source community: thanks to updates made by @yagoduppel, the Markov Chain GitHub repository can now support more than four states. Also it looks way nicer than before.
So here are updated examples of how to easily draw state transition diagrams in Python.
Basic Install
- Clone the https://github.com/NaysanSaran/markov-chain repository
- Copy the files src/node.py and src/markovchain.py in your script directory
- Then simply do
# Basically you just import it as a module from markovchain import MarkovChain
Two States
P = np.array([[0.8, 0.2], [0.1, 0.9]]) # Transition matrix mc = MarkovChain(P, ['1', '2']) mc.draw("../img/markov-chain-two-states.png")
Three States
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("../img/markov-chain-three-states.png")
Four States
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")
Five States
P = np.array([ [0.8, 0.1, 0.1, 0.0, 0.0], [0.1, 0.6, 0.0, 0.2, 0.1], [0.1, 0.0, 0.7, 0.2, 0.0], [0.1, 0.0, 0.4, 0.2, 0.3], [0.6, 0.1, 0.1, 0.0, 0.2], ]) mc = MarkovChain(P, ['1', '2', '3', '4', '5']) mc.draw("../img/markov-chain-five-states.png")
And you can keep going.