Bird
Raised Fist0
Matplotlibdata~5 mins

Combining Seaborn and Matplotlib

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction

We combine Seaborn and Matplotlib to create beautiful and customized charts. Seaborn makes it easy to plot nice graphs, and Matplotlib lets us change details like labels and colors.

You want a quick, pretty chart but also need to add custom titles or labels.
You want to add extra lines or shapes on top of a Seaborn plot.
You want to change the size or style of a plot after creating it with Seaborn.
You want to save a Seaborn plot with specific formatting using Matplotlib.
You want to combine multiple plots in one figure using Matplotlib but use Seaborn for styling.
Syntax
Matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

# Create a Seaborn plot
sns.scatterplot(data=data, x='x_column', y='y_column')

# Use Matplotlib to customize
plt.title('My Plot Title')
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.show()

Seaborn builds on Matplotlib, so you can use Matplotlib commands after creating a Seaborn plot.

Always call plt.show() at the end to display the plot.

Examples
This example shows a scatter plot of iris data with a custom title added using Matplotlib.
Matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

# Load example data
iris = sns.load_dataset('iris')

# Seaborn scatter plot
sns.scatterplot(data=iris, x='sepal_length', y='sepal_width')

# Add title with Matplotlib
plt.title('Sepal Length vs Width')
plt.show()
Here, we rotate the x-axis labels to make them easier to read using Matplotlib.
Matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

# Load data
penguins = sns.load_dataset('penguins')

# Create boxplot with Seaborn
sns.boxplot(data=penguins, x='species', y='body_mass_g')

# Rotate x-axis labels with Matplotlib
plt.xticks(rotation=45)
plt.show()
This example adds a grid to a Seaborn line plot using Matplotlib.
Matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

# Load data
fmri = sns.load_dataset('fmri')

# Line plot with Seaborn
sns.lineplot(data=fmri, x='timepoint', y='signal', hue='event')

# Add grid with Matplotlib
plt.grid(True)
plt.show()
Sample Program

This program creates a scatter plot of tips vs total bill grouped by day using Seaborn. Then it adds a title, axis labels, legend title, and grid using Matplotlib.

Matplotlib
import seaborn as sns
import matplotlib.pyplot as plt

# Load example dataset
tips = sns.load_dataset('tips')

# Create a Seaborn scatter plot
sns.scatterplot(data=tips, x='total_bill', y='tip', hue='day')

# Customize with Matplotlib
plt.title('Tips vs Total Bill by Day')
plt.xlabel('Total Bill ($)')
plt.ylabel('Tip ($)')
plt.legend(title='Day of Week')
plt.grid(True)

# Show the plot
plt.show()
OutputSuccess
Important Notes

You can mix Seaborn and Matplotlib commands freely because Seaborn uses Matplotlib under the hood.

Always call plt.show() once after all customizations to display the final plot.

Use Matplotlib to add annotations, change figure size, or save plots with specific settings.

Summary

Seaborn makes beautiful plots easily.

Matplotlib lets you customize those plots in many ways.

Combining both gives you power and flexibility for your charts.

Practice

(1/5)
1. What is the main reason to combine Seaborn and Matplotlib in a plot?
easy
A. Seaborn and Matplotlib cannot be used together
B. Because Seaborn cannot create any plots on its own
C. Matplotlib is only for 3D plots, so Seaborn is needed for 2D
D. To use Seaborn's easy plotting and Matplotlib's customization features

Solution

  1. Step 1: Understand Seaborn's strength

    Seaborn creates beautiful and easy statistical plots quickly.
  2. Step 2: Understand Matplotlib's strength

    Matplotlib allows detailed customization like adding titles, labels, and lines.
  3. Final Answer:

    To use Seaborn's easy plotting and Matplotlib's customization features -> Option D
  4. Quick Check:

    Seaborn + Matplotlib = Easy + Customization [OK]
Hint: Seaborn plots, Matplotlib customizes [OK]
Common Mistakes:
  • Thinking Seaborn can't plot alone
  • Believing Matplotlib is only for 3D
  • Assuming they can't be combined
2. Which of the following code snippets correctly adds a title to a Seaborn plot using Matplotlib?
easy
A.
import seaborn as sns
import matplotlib.pyplot as plt
sns.histplot(data)
plt.title('Histogram')
B.
import seaborn as sns
sns.histplot(data).title('Histogram')
C.
import matplotlib.pyplot as plt
plt.histplot(data)
plt.set_title('Histogram')
D.
import seaborn as sns
sns.histplot(data)
plt.setTitle('Histogram')

Solution

  1. Step 1: Identify correct Seaborn and Matplotlib usage

    Seaborn creates the plot, Matplotlib's plt.title() adds the title.
  2. Step 2: Check syntax correctness

    import seaborn as sns
    import matplotlib.pyplot as plt
    sns.histplot(data)
    plt.title('Histogram')
    uses sns.histplot(data) then plt.title('Histogram'), which is correct.
  3. Final Answer:

    import seaborn as sns import matplotlib.pyplot as plt sns.histplot(data) plt.title('Histogram') -> Option A
  4. Quick Check:

    Seaborn plot + plt.title() = Correct [OK]
Hint: Use plt.title() after Seaborn plot [OK]
Common Mistakes:
  • Calling title() directly on Seaborn plot object
  • Using plt.set_title() instead of plt.title()
  • Misspelling method names like setTitle
3. What will be the output of this code?
import seaborn as sns
import matplotlib.pyplot as plt

sns.scatterplot(x=[1,2,3], y=[4,5,6])
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Scatter Plot')
plt.show()
medium
A. A scatter plot with labeled X axis, Y axis, and title
B. A scatter plot without any labels or title
C. An error because plt.xlabel() cannot be used with Seaborn
D. A line plot instead of scatter plot

Solution

  1. Step 1: Understand the plot creation

    sns.scatterplot creates a scatter plot with given x and y points.
  2. Step 2: Check Matplotlib label and title additions

    plt.xlabel, plt.ylabel, and plt.title add labels and title correctly.
  3. Final Answer:

    A scatter plot with labeled X axis, Y axis, and title -> Option A
  4. Quick Check:

    Seaborn plot + plt labels = Labeled plot [OK]
Hint: Matplotlib labels work after Seaborn plot [OK]
Common Mistakes:
  • Expecting errors using plt.xlabel with Seaborn
  • Confusing scatterplot with line plot
  • Forgetting plt.show() to display plot
4. Identify the error in this code that tries to combine Seaborn and Matplotlib:
import seaborn as sns
import matplotlib.pyplot as plt

sns.boxplot(data=[1,2,3,4,5])
plt.xlabel('Values')
plt.title('Boxplot')
plt.show()
medium
A. plt.xlabel() causes error because boxplot has no x-axis
B. No error; code runs and shows labeled boxplot
C. Missing plt.figure() before plotting causes error
D. sns.boxplot requires x and y parameters, so data alone causes error

Solution

  1. Step 1: Check sns.boxplot usage

    Passing data as a list is valid for sns.boxplot; it plots distribution.
  2. Step 2: Check Matplotlib label usage

    plt.xlabel('Values') adds label to x-axis; plt.title adds title; no error occurs.
  3. Final Answer:

    No error; code runs and shows labeled boxplot -> Option B
  4. Quick Check:

    Seaborn boxplot + plt labels = Works fine [OK]
Hint: Boxplot accepts data list; plt.xlabel works [OK]
Common Mistakes:
  • Thinking plt.xlabel errors without x parameter
  • Assuming plt.figure() is mandatory before plot
  • Believing sns.boxplot needs x and y always
5. You want to create a Seaborn barplot and add a horizontal line at y=5 using Matplotlib. Which code correctly does this?
hard
A.
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(x=['A','B'], y=[3,7])
plt.hline(y=5, color='red')
plt.show()
B.
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(x=['A','B'], y=[3,7])
plt.lineh(y=5, color='red')
plt.show()
C.
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(x=['A','B'], y=[3,7])
plt.axhline(y=5, color='red')
plt.show()
D.
import seaborn as sns
import matplotlib.pyplot as plt
sns.barplot(x=['A','B'], y=[3,7])
plt.axline(y=5, color='red')
plt.show()

Solution

  1. Step 1: Create barplot with Seaborn

    sns.barplot with x and y lists creates the bar chart correctly.
  2. Step 2: Add horizontal line with Matplotlib

    plt.axhline(y=5, color='red') adds a horizontal line at y=5; other options are invalid methods.
  3. Final Answer:

    import seaborn as sns import matplotlib.pyplot as plt sns.barplot(x=['A','B'], y=[3,7]) plt.axhline(y=5, color='red') plt.show() -> Option C
  4. Quick Check:

    Use plt.axhline() for horizontal line [OK]
Hint: Use plt.axhline() for horizontal lines [OK]
Common Mistakes:
  • Using plt.lineh or plt.hline which don't exist
  • Confusing plt.axline with plt.axhline
  • Forgetting plt.show() to display plot