# 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.

As we can see, this plots the interaction of city and store. The four points on the plots actually are the means (see below). Thus, this method also shows how you can plot four means in Python.

```              sales
city  store
City1 store1   20.0
store2   35.0
City2 store1    8.5
store2    6.0```