 diseases: interact

# Calmcode - diseases: Interact

You can introduce a slider in jupyter to interact with the chart. Here's the code you'd need.

``````from ipywidgets import interact

import numpy as np
import matplotlib.pylab as plt

@interact(p=(0.001, 0.2, 0.001))
def f(p):
g = np.linspace(1, 200, 500)
prob_group_safe = (1-p)**g
plt.figure(figsize=(12, 3))
plt.plot(g, g*prob_group_safe, label=f"p={np.round(p, 3)}")
plt.xlabel("number of people in a group")
plt.ylabel("E(groups off the hook)")
plt.legend();
``````

### Extra

You can also run this snippet of code if you'd like to compare two different curves based on different probabilities.

``````from ipywidgets import interact

import numpy as np
import matplotlib.pylab as plt

@interact(p=(0.001, 0.2, 0.001))
def g(p):
g = np.linspace(1, 200, 500)
plt.figure(figsize=(12, 3))
plt.plot(g, g*(1-0.02)**g, label="p=0.02")
plt.plot(g, g*(1-p)**g, label=f"p={np.round(p, 3)}")
plt.xlabel("number of people in a group")
plt.legend();
``````

### Bonus

This is a tricky question. But the code below shows charts that are a bit different. Can you guess what this chart might represent?

``````from ipywidgets import interact

import numpy as np
import matplotlib.pylab as plt

@interact(p=(0.001, 0.2, 0.001))
def f(p):
g = np.linspace(1, 200, 500)
plt.figure(figsize=(12, 3))
plt.plot(g, g*0.02*(1-0.02)**g, label="p=0.02")
plt.plot(g, g*p*(1-p)**g, label=f"p={np.round(p, 3)}")
plt.xlabel("number of people in a group")
plt.legend();
``````