How do I create boxplots by group with matplotlib?

To create boxplots by group with matplotlib, you can use the boxplot() function, which takes a list of lists of values corresponding to each group, and draws a boxplot for each group. The boxplot() function allows you to customize the look and feel of the plot, such as the type of marker to use, the colors, and the size of the plot. You can also use the seaborn library to create boxplots by group with matplotlib, which offers more flexibility and customization options.


You can use the following syntax to create boxplots by group in Matplotlib:

import matplotlib as plt
import seaborn as sns

sns.boxplot(x='group', y='values', data=df)

The following examples show how to use this syntax to create boxplots by group for datasets in both long-form and wide-form.

Example 1: Boxplots by Group for Long-Form Data

The following code shows how to create boxplots by group for a pandas DataFrame in a long format:

import pandas as pd
import numpy as np
import matplotlib as plt
import seaborn as sns

#create long-form data
df = pd.DataFrame({'points': [7, 8, 9, 12, 14, 5, 6, 6, 8, 11, 8, 9, 11, 13, 17],
                   'team': np.repeat(['A', 'B', 'C'], 5)})

#view data
print(df)

    points team
0        7    A
1        8    A
2        9    A
3       12    A
4       14    A
5        5    B
6        6    B
7        6    B
8        8    B
9       11    B
10       8    C
11       9    C
12      11    C
13      13    C
14      17    C

#create boxplot by group
sns.boxplot(x='team', y='points', data=df)

Matplotilb boxplot by group

Example 2: Boxplots by Group for Wide-Form Data

The following code shows how to create boxplots by group for a pandas DataFrame in a wide format:

import pandas as pd
import numpy as np
import matplotlib as plt
import seaborn as sns

#create wide-form data
df = pd.DataFrame({'A': [7, 8, 9, 12, 14],
                   'B': [5, 6, 6, 8, 11],
                   'C': [8, 9, 11, 13, 17]})

#view data
print(df)

    A   B   C
0   7   5   8
1   8   6   9
2   9   6  11
3  12   8  13
4  14  11  17

#create boxplot by group
sns.boxplot(x='variable', y='value', data=pd.melt(df)).set(
            xlabel='team', 
            ylabel='points')

Matplotilb boxplot by group

x