Data Visualization with Matplotlib: From Basics to Advanced
Learn how to create stunning visualizations in Python using the Matplotlib library.

Data Visualization with Matplotlib: From Basics to Advanced
Data visualization is a crucial skill for any data scientist or analyst. Matplotlib is one of the most popular Python libraries for creating static, animated, and interactive visualizations.
Getting Started with Matplotlib
First, you'll need to install Matplotlib using pip:
BASH1pip install matplotlib
Let's create a simple line plot to get started:
PYTHON1import matplotlib.pyplot as plt 2import numpy as np 3 4# Create data 5x = np.linspace(0, 10, 100) 6y = np.sin(x) 7 8# Create plot 9plt.figure(figsize=(10, 6)) 10plt.plot(x, y, label="sin(x)") 11plt.title("Simple Sine Wave") 12plt.xlabel("x") 13plt.ylabel("sin(x)") 14plt.legend() 15plt.grid(True) 16plt.show()
This code will generate a beautiful sine wave plot with proper labels and a grid.
Creating Different Types of Plots
Matplotlib can create many different types of visualizations. Here are a few examples:
Bar Chart
Bar charts are perfect for comparing categorical data:
PYTHON1categories = ["Category A", "Category B", "Category C", "Category D"] 2values = [4, 7, 2, 5] 3 4plt.figure(figsize=(10, 6)) 5plt.bar(categories, values, color="skyblue") 6plt.title("Simple Bar Chart") 7plt.xlabel("Categories") 8plt.ylabel("Values") 9plt.show()
Scatter Plot
Scatter plots help visualize relationships between two variables:
PYTHON1x = np.random.rand(100) 2y = np.random.rand(100) 3colors = np.random.rand(100) 4sizes = 1000 * np.random.rand(100) 5 6plt.figure(figsize=(10, 6)) 7plt.scatter(x, y, c=colors, s=sizes, alpha=0.5) 8plt.title("Scatter Plot with Random Data") 9plt.xlabel("X Values") 10plt.ylabel("Y Values") 11plt.colorbar(label="Color Values") 12plt.show()
Customizing Your Plots
Matplotlib offers extensive customization options:
Multiple Subplots
PYTHON1fig, axs = plt.subplots(2, 2, figsize=(12, 10)) 2 3# First subplot (top left) 4axs[0, 0].plot(x, np.sin(x)) 5axs[0, 0].set_title('Sine Wave') 6 7# Second subplot (top right) 8axs[0, 1].plot(x, np.cos(x), 'r-') 9axs[0, 1].set_title('Cosine Wave') 10 11# Third subplot (bottom left) 12axs[1, 0].plot(x, np.sin(x) + np.cos(x), 'g--') 13axs[1, 0].set_title('Sine + Cosine') 14 15# Fourth subplot (bottom right) 16axs[1, 1].plot(x, np.sin(x) * np.cos(x), 'b-.') 17axs[1, 1].set_title('Sine * Cosine') 18 19# Add spacing between subplots 20plt.tight_layout() 21plt.show()
Styling Your Plots
Matplotlib comes with several built-in styles:
PYTHON1plt.style.use('ggplot') # Use ggplot style 2 3plt.figure(figsize=(10, 6)) 4plt.plot(x, np.sin(x), label='Sine') 5plt.plot(x, np.cos(x), label='Cosine') 6plt.title('Styled Plot') 7plt.legend() 8plt.show()
Other popular styles include 'seaborn', 'dark_background', 'bmh', and 'fivethirtyeight'.
Saving Your Visualizations
To save your plot to a file:
PYTHON1plt.figure(figsize=(10, 6)) 2plt.plot(x, np.sin(x)) 3plt.title('Sine Wave') 4plt.savefig('sine_wave.png', dpi=300, bbox_inches='tight')
Advanced Matplotlib: 3D Plots
Matplotlib can also create 3D visualizations:
PYTHON1from mpl_toolkits.mplot3d import Axes3D 2 3fig = plt.figure(figsize=(10, 8)) 4ax = fig.add_subplot(111, projection='3d') 5 6# Create data 7x = np.linspace(-5, 5, 50) 8y = np.linspace(-5, 5, 50) 9X, Y = np.meshgrid(x, y) 10Z = np.sin(np.sqrt(X**2 + Y**2)) 11 12# Plot surface 13surface = ax.plot_surface(X, Y, Z, cmap='viridis') 14 15ax.set_title('3D Surface Plot') 16ax.set_xlabel('X') 17ax.set_ylabel('Y') 18ax.set_zlabel('Z') 19 20# Add colorbar 21fig.colorbar(surface, ax=ax, shrink=0.5, aspect=5) 22 23plt.show()
Conclusion
Matplotlib is an incredibly powerful library for data visualization in Python. With its extensive customization options and wide range of plot types, you can create virtually any visualization you need for your data science projects.
Remember that practice is key to mastering data visualization. Try recreating plots from publications or websites you admire, and soon you'll be creating stunning visualizations of your own!