Skip to main content
Data Visualization
CHAPTER 13 Beginner

Introduction to Seaborn

Updated: May 18, 2026
5 min read

# CHAPTER 13

Introduction to Seaborn

1. Chapter Introduction

Seaborn is Matplotlib's statistical visualization layer — it produces publication-quality charts from Pandas DataFrames in one line, handles grouping automatically, and applies beautiful themes out of the box. It's the preferred library for EDA.

2. Seaborn Setup and Basics

python
12345678910111213141516
import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

# Global theme
sns.set_theme(style='whitegrid', palette='husl', font_scale=1.1)

# Built-in datasets
tips = sns.load_dataset('tips')
iris = sns.load_dataset('iris')
penguins = sns.load_dataset('penguins')

print(tips.head())
print(tips.dtypes)
print(tips['day'].value_counts())

3. Categorical Plots

python
123456789101112131415161718192021222324252627282930313233343536373839404142434445
import seaborn as sns
import matplotlib.pyplot as plt

sns.set_theme(style='whitegrid')
tips = sns.load_dataset('tips')

fig, axes = plt.subplots(2, 3, figsize=(16, 10))

# 1: Bar plot (with CI)
sns.barplot(data=tips, x='day', y='total_bill', ax=axes[0,0],
             palette='Blues_d', errorbar='ci', capsize=0.1)
axes[0,0].set_title('Avg Bill by Day (with 95% CI)')

# 2: Count plot
sns.countplot(data=tips, x='day', hue='sex', ax=axes[0,1], palette='Set2')
axes[0,1].set_title('Customer Count by Day & Gender')

# 3: Box plot
sns.boxplot(data=tips, x='day', y='total_bill', hue='time',
             ax=axes[0,2], palette='Set3')
axes[0,2].set_title('Bill Distribution by Day & Time')

# 4: Violin plot
sns.violinplot(data=tips, x='day', y='total_bill', inner='quartile',
                ax=axes[1,0], palette='husl')
axes[1,0].set_title('Bill Distribution (Violin)')

# 5: Strip plot
sns.stripplot(data=tips, x='day', y='total_bill', jitter=True,
               alpha=0.5, ax=axes[1,1], palette='Set1')
axes[1,1].set_title('All Individual Bills (Jittered)')

# 6: Point plot
sns.pointplot(data=tips, x='day', y='total_bill', hue='sex',
               dodge=True, ax=axes[1,2], palette='deep')
axes[1,2].set_title('Mean Bill by Day & Gender')

for ax in axes.flatten():
    ax.spines['top'].set_visible(False)
    ax.spines['right'].set_visible(False)

plt.suptitle('Seaborn Categorical Plots', fontsize=14, fontweight='bold')
plt.tight_layout()
plt.savefig('seaborn_categorical.png', dpi=150)
plt.show()

4. FacetGrid — Small Multiples

python
123456789
# FacetGrid — create the same chart for each subset
g = sns.FacetGrid(tips, col='time', row='sex', height=4, aspect=1.2)
g.map(sns.scatterplot, 'total_bill', 'tip', alpha=0.6)
g.add_legend()
g.set_titles(col_template='{col_name}', row_template='{row_name}')
g.set_axis_labels('Total Bill ($)', 'Tip ($)')
g.figure.suptitle('Bill vs Tip by Time and Gender', y=1.02, fontsize=13, fontweight='bold')
plt.savefig('facetgrid.png', dpi=150, bbox_inches='tight')
plt.show()

5. Common Mistakes

  • Forgetting errorbar=None: By default, Seaborn's barplot() shows 95% confidence intervals (error bars). For raw totals (not means), use estimator='sum', errorbar=None.
  • palette with wrong number of colors: When using hue with 3 categories, a palette with 2 colors causes errors. Use named palettes or specify enough colors.

6. MCQs

Question 1

sns.set_theme(style='whitegrid') applies?

Question 2

hue='sex' in Seaborn barplot?

Question 3

sns.violinplot() shows?

Question 4

sns.load_dataset('tips') loads?

Question 5

FacetGrid is used for?

Question 6

sns.countplot() shows?

Question 7

Error bars in sns.barplot() represent by default?

Question 8

dodge=True in pointplot does?

Question 9

Seaborn's main advantage over raw Matplotlib?

Question 10

inner='quartile' in violinplot shows?

7. Interview Questions

  • Q: What is the difference between Seaborn's barplot() and countplot()?
  • Q: How does FacetGrid help with small multiples in Seaborn?

8. Summary

Seaborn wraps Matplotlib with a statistical focus: automatic grouping via hue, confidence intervals in bar plots, FacetGrid for small multiples. Built-in datasets (tips, iris, penguins) enable instant practice. sns.set_theme() applies consistent aesthetics. Violin plots combine box plot + KDE for complete distribution insight.

9. Next Chapter Recommendation

In Chapter 14: Statistical Visualization with Seaborn, we master pair plots, regression plots, KDE plots, and advanced statistical visualizations for EDA.

Finish this Chapter

Save your progress on your learning path and prepare for coding interview challenges.

Discussion

Join the discussion

Log in or create a free account to participate.

Sort: ·