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