# Plot Two-Way ANOVA in Python (with Example)

This tutorial shows how you can plot Two-Way ANOVA interaction in Python. In particular, you can use `interaction_plot()` function from statsmodels.graphics to plot the Two-way ANOVA.

## Step 1: Prepare the data

Suppose that there are two categorical variables, namely `city` (city 1 and city 2) and `store` (store 1 and store 2). The dependent variable is `sales`. We can generate a hypothetical data using Python.

``````# import the module of Numpy
import numpy as np

# generate two arrays of city and store
# generate IV of city
city = np.repeat(['City1','City2'],5)
print("IV of city: \n", city)

# generate IV of store
store = np.tile(['store1','store2'], 5)
print("IV of store: \n",store)

# generate DV of sales
sales=[10,20,20,50,30,10,5,4,12,4]
print("DV of sales: \n",sales)``````

Output:

```IV of city:
['City1' 'City1' 'City1' 'City1' 'City1' 'City2' 'City2' 'City2' 'City2'
'City2']

IV of store:
['store1' 'store2' 'store1' 'store2' 'store1' 'store2' 'store1' 'store2'
'store1' 'store2']

DV of sales:
[10, 20, 20, 50, 30, 10, 5, 4, 12, 4]```

## Step 2: Use `interaction_plot()`

``````# import the module of matplotlib
import matplotlib.pyplot as plt

# import interaction_plot from statsmodels
from statsmodels.graphics.factorplots import interaction_plot

# set the figure size, and you can change the numbers if you prefer
fig, ax = plt.subplots(figsize=(6, 6))

# the following is the key plot statement
# IV of city on the x-axis
# IV of store on the y-axis
# DV of sales as "response"
fig = interaction_plot(
x=city,
trace=store,
response=sales,
colors=["red", "blue"],
markers=["D", "^"],
ms=10,
ax=ax,
)``````

The following is the output, namely the plot of the two-way ANOVA.

```              sales