Visualization

Data Visualization

Create compelling charts and visualizations with Matplotlib and Seaborn.

Why Visualize Data?

Visualization helps you:

  • Understand distributions and relationships
  • Spot outliers and anomalies
  • Communicate findings to stakeholders
  • Validate model results

Matplotlib vs Seaborn

  • Matplotlib: Low-level, full control
  • Seaborn: Built on Matplotlib, beautiful statistical plots with less code

Chart Types

  • Histogram: Distribution of a single variable
  • Bar chart: Compare categories
  • Line chart: Trends over time
  • Scatter plot: Relationship between two variables
  • Box plot: Distribution + outliers
  • Heatmap: Correlation matrix, 2D patterns
  • Pair plot: All pairwise relationships

Example

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

# Use seaborn's built-in dataset
tips = sns.load_dataset('tips')

# Set style
sns.set_theme(style='whitegrid', palette='muted')
fig, axes = plt.subplots(2, 3, figsize=(15, 10))

# 1. Distribution
sns.histplot(data=tips, x='total_bill', hue='time', kde=True, ax=axes[0, 0])
axes[0, 0].set_title('Bill Distribution by Time')

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

# 3. Scatter with regression
sns.regplot(data=tips, x='total_bill', y='tip', ax=axes[0, 2])
axes[0, 2].set_title('Bill vs Tip')

# 4. Box plot
sns.boxplot(data=tips, x='day', y='total_bill', hue='time', ax=axes[1, 0])
axes[1, 0].set_title('Bill by Day')

# 5. Heatmap - correlation
numeric_cols = tips.select_dtypes(include='number')
corr = numeric_cols.corr()
sns.heatmap(corr, annot=True, fmt='.2f', cmap='coolwarm', ax=axes[1, 1])
axes[1, 1].set_title('Correlation Heatmap')

# 6. Violin plot
sns.violinplot(data=tips, x='day', y='tip', hue='sex',
               split=True, ax=axes[1, 2])
axes[1, 2].set_title('Tip Distribution')

plt.tight_layout()
plt.savefig('analysis.png', dpi=150, bbox_inches='tight')
plt.show()

# Pair plot
pair_plot = sns.pairplot(tips, hue='time', diag_kind='kde')
plt.suptitle('Pairwise Relationships', y=1.02)
plt.show()
Try it yourself — PYTHON