Exploring Data Visualization with Python's Matplotlib Library
Published: 2023-06-21 14:59:54

Data visualization is a technique of representing data in a graphical or pictorial format. It is a powerful tool that helps analysts and decision-makers to understand trends, patterns, and relationships within data. The importance of data visualization lies in its ability to simplify complex data and make it more accessible, understandable, and actionable.

Visualization allows us to see patterns and relationships in data that might not be apparent from a simple table or spreadsheet. It helps us identify outliers, anomalies, and trends that would be difficult to detect otherwise.

In this article, we'll introduce the fundamental concepts of data visualization using the Matplotlib library in Python. The article covers the basic syntax and functionality of Matplotlib, as well as the various types of plots and graphs that can be created with the library.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dloulzu6cc21uw8j1rux.png)

## What is Matplotlib in Python?
Matplotlib is a data visualization library for Python. It is used to create high-quality 2D and 3D plots and charts. Matplotlib can be used in Python scripts, the Python and IPython shell, web application servers, and various graphical user interface toolkits.

Matplotlib provides a wide range of functionalities for creating static, animated, and interactive visualizations in Python. It is widely used in scientific computing, engineering, finance, and data analysis. Matplotlib is an open-source library and is compatible with many operating systems, including Windows, macOS, and Linux.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jtpx61jjm8psvp4lwo41.png)

## How to Install Matplotlib in Python
Before we start on the main data visualization tutorial, you'll need to have Python and Matplotlib installed on your computer. Alternatively, you can also use the [Python online compiler](https://www.lightly-dev.com/python/) provided by Lightly IDE to learn through this tutorial right in your web browser.

If you're using Lightly IDE, the setup process is rather simple. You can simply create an account or log in to your existing account, and create a Python project with a Python Matplotlib Project template.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31zyxi3bdddx6v9ump3c.png)

If you've already downloaded your own code editor and have Python installed on your computer, you can also install the Python library by using the pip package manager. To do so, open your command prompt or terminal and type the following command:

```
pip install matplotlib
```

This will install the latest version of Matplotlib. If you want to install a specific version, you can specify it by adding == followed by the version number. For example:

```
pip install matplotlib==3.3.3
```

Once the installation is complete, you can start using Matplotlib in your Python projects.

## Importing Matplotlib in Python
To use Matplotlib library in Python, it first needs to be imported. The conventional way of importing is to use the alias plt for pyplot. This can be done using the following command:

```python
import matplotlib.pyplot as plt
```

This command imports the pyplot module from the Matplotlib library and assigns an alias plt for easy referencing. The pyplot module is the most widely used module in Matplotlib, and it provides a simple interface for creating and customizing plots. Once the module is imported, it can be used to create different types of visualizations using various built-in functions and methods.

## Creating a basic plot using Matplotlib
Matplotlib is a popular data visualization library in Python that provides a wide range of options for creating high-quality plots. The first step to creating a plot using Matplotlib is to import the library and the necessary modules. The most commonly used module is pyplot.

Once imported, data can be plotted using the plot() function. This function takes two arrays as arguments, representing the x and y coordinates of each point. The basic plot can be customized by adding a title, labels for the x and y axes, and a legend. Matplotlib provides a comprehensive range of customization options to create a visually appealing and informative plot.

## Basic line plot in Matplotlib
Line charts are the most common type of chart and are used to display trends over time. Matplotlib's pyplot module makes it easy to create line charts. A basic line chart is created using the plot() function. For example, to create a simple line chart that displays the trend of sales over time, we can use the following code:

import matplotlib.pyplot as plt

# Data
sales = [100, 120, 90, 80, 110, 130, 120]
months = range(1, 8)

# Create plot
plt.plot(months, sales)

# Add labels and title
plt.xlabel('Month')
plt.ylabel('Sales')
plt.title('Sales Trend')

# Show plot
plt.show()

This code will create a line chart with the sales data plotted against the months on the x-axis. The xlabel(), ylabel(), and title() functions are used to add labels to the x-axis, y-axis, and the chart title, respectively. Finally, the show() function is called to display the chart.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sskyqna45t5db0hoimh8.png)


### Multiple lines in a plot
Matplotlib library allows creating multiple lines in a single plot. This is useful when we want to compare multiple data sets or variables. To create multiple lines, we can simply pass multiple data sets to the plot() function. 

For example, if we have two sets of data x1 and y1, and x2 and y2, we can create two lines in the same plot as follows:

import matplotlib.pyplot as plt

x1 = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]

x2 = [1, 2, 3, 4, 5]
y2 = [5, 4, 3, 2, 1]

plt.plot(x1, y1)
plt.plot(x2, y2)

plt.show()

In this case, we will get two lines, one for x1 and y1, and the other for x2 and y2. We can customize each line separately, such as setting different colors, markers, and line styles.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hl6la5zjj1s8lv468xc9.png)

### Customizing Line Plots
Matplotlib library allows users to customize line plots by modifying various parameters such as line style, marker style, and line color. The plt.plot() function takes several parameters that can be used to customize the line plots. For example, we can change the line style from a solid line to a dashed line using the linestyle parameter.

Similarly, we can change the marker style using the marker parameter. We can also change the color of the line using the color parameter. Overall, these customizations can help improve the visual appeal of the line plots, making them more informative and attractive to viewers.

### Adding labels, title, and legend
To make the graph more informative, we can add labels, title, and legend. We can add a title to the plot using the title() function, and labels for the x and y axis using the xlabel() and ylabel() functions, respectively. For example, plt.title('Monthly Sales') will add a title to the plot with the text 'Monthly Sales'. 

Similarly, plt.xlabel('Month') and plt.ylabel('Sales') will add labels to the x and y axis, respectively.

Additionally, to add a legend to the plot, we can call the legend() function and pass in a list of label names. For example, plt.legend(['Product A', 'Product B', 'Product C']) will add a legend with the three labels 'Product A', 'Product B', and 'Product C'. These simple additions can greatly improve the clarity and understanding of the plot.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6681qxblbqnxj24bl13.png)

## Basic Scatter Plot in Matplotlib
Scatter plots are useful for visualizing the relationship between two numerical variables. To create a basic scatter plot using Matplotlib, we use the scatter() function.

This function takes two arrays as arguments, the first representing the x-coordinates of the data points and the second representing the y-coordinates. We can also specify the size and color of the markers used to represent the data points.

With a scatter plot, we can quickly see if there is a correlation between the two variables by examining the trend of the points on the plot. A scatter plot is a simple yet effective way to visualize data and is a great starting point for data exploration.

The code you provided creates a scatter plot to visualize the relationship between sales and years. Let's break it down:
```python
import pandas as pd
import matplotlib.pyplot as plt

# Create a DataFrame
data = {'Year': [2010, 2011, 2012, 2013, 2014, 2015],
        'Sales': [500, 700, 900, 1100, 1300, 1500]}
df = pd.DataFrame(data)

# Create a scatter plot
plt.scatter(df['Year'], df['Sales'])
plt.xlabel('Year')
plt.ylabel('Sales')
plt.title('Sales Scatter Plot')
plt.show()
```

The plt.scatter() function from the matplotlib.pyplot library to create a scatter plot. It takes two arguments: the 'Year' column from the DataFrame df as the x-axis values, and the 'Sales' column from df as the y-axis values. The function will plot individual dots representing the sales values for each year.

The plt.xlabel(), plt.ylabel(), and plt.title() functions to set the labels for the x-axis, y-axis, and the plot's title, respectively. In this case, the x-axis label is set as 'Year', the y-axis label as 'Sales', and the title as 'Sales Scatter Plot'.

The resulting scatter plot will have dots or markers representing the sales values at their corresponding years. The x-axis will show the years, and the y-axis will represent the sales values. By examining the distribution of the dots, you can observe any relationship or pattern between the two variables.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5id7titbgg5dbslimj4g.png)


## Basic Bar Plot in Matplotlib
A bar plot is a plot that represents categorical data with rectangular bars with heights or lengths proportional to the values that they represent.

In Python's Matplotlib library, we can create a basic bar plot using the bar function. This function requires two arrays as input, one for the x-axis values and one for the y-axis values. The x-axis array contains the categories, and the y-axis array contains the values for each category.

Once we have our data ready, we can call the bar function and pass in our arrays to create the bar plot. We can also customize the plot by adding a title, x and y-axis labels, and changing the color of the bars.

### Horizontal Bar Plots
In Matplotlib, horizontal bar plots can be created using the barh function. This function takes the same arguments as the bar function, but the height parameter is replaced with width.

Here's an example of how to create a horizontal bar plot:
```python
import matplotlib.pyplot as plt

x = [10, 20, 30, 40, 50]
y = ['A', 'B', 'C', 'D', 'E']

plt.barh(y, x, color='green')
plt.xlabel('X Label')
plt.ylabel('Y Label')
plt.title('Horizontal Bar Plot')
plt.show()
```

This code will create a horizontal bar plot with the labels on the Y-axis and the values on the X-axis. You can customize the plot by changing the color, labels, and title as needed.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ss3w6h23gf9xzr5phx89.png)

## Basic histogram in Matplotlib
A histogram is a graph showing the frequency distribution of a set of continuous data. It's commonly used to represent data in statistics and data science. In Python's Matplotlib library, we can create a basic histogram using the hist() function.

The hist() function takes a set of data and divides it into a set of bins and then counts the number of data points that fall into each bin. The resulting histogram shows the frequency distribution of the data.

To create a basic histogram, we first need to import the Matplotlib library and then use the hist() function to plot the histogram.
```python
import matplotlib.pyplot as plt

# Sample data
data = [3, 5, 2, 7, 4, 6, 8, 2, 5, 4, 7, 6, 4, 3, 5]

# Create a histogram
plt.hist(data, bins=5)

# Add labels and title
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.title('Histogram')

# Display the plot
plt.show()
```

In this example, we have a sample dataset stored in the data list. The plt.hist() function is used to create the histogram, specifying the data and the number of bins (in this case, 5). Then, we add labels to the x-axis and y-axis using plt.xlabel() and plt.ylabel(), respectively. Finally, we set the title of the plot using plt.title().

By running this code, you will generate a basic histogram with the frequency of values represented on the y-axis and the value ranges grouped into bins on the x-axis.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lr9vziagycm0s1s7coq8.png)


## Basic pie chart in Matplotlib
A pie chart is a circular graphic that is divided into slices to illustrate numerical proportions. It is a useful visualization tool for showing how data is distributed across different categories. In Python, we can easily create pie charts using the Matplotlib library.

To create a basic pie chart, we first import the Matplotlib library, then we create a list of values representing the data to be visualized. We then use the pie() function in Matplotlib to create the chart.

The pie() function takes in the data values as input and returns a pie chart with default settings. We can customize the appearance of the chart by passing in additional arguments to the pie() function.

Here's an example of how to code a basic pie chart using Matplotlib:
```python
import matplotlib.pyplot as plt

# Sample data
labels = ['A', 'B', 'C', 'D', 'E']
sizes = [15, 30, 25, 10, 20]

# Create a pie chart
plt.pie(sizes, labels=labels)

# Add a title
plt.title('Basic Pie Chart')

# Display the chart
plt.show()
```

In this example, we have a sample dataset with labels stored in the labels list and corresponding sizes or proportions stored in the sizes list. The plt.pie() function is used to create the pie chart, passing the sizes as the data and labels as the corresponding labels for each slice. We add a title to the chart using plt.title().

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nprl4cv2x0e4h2r35ba1.png)


## Creating subplots in Matplotlib
When working with multiple plots, it is often necessary to create subplots to better organize the data you're visualizing. Matplotlib provides a straightforward way of creating subplots using the subplot() function. This function takes three arguments: the number of rows of subplots, the number of columns of subplots, and the index of the current subplot (starting from 1).

For instance, to create a figure with two plots stacked vertically, we can use the following code:
```python
import matplotlib.pyplot as plt

# create figure and subplots
fig, axs = plt.subplots(2, 1)

# plot data on first subplot
axs[0].plot([1, 2, 3], [4, 5, 6])

# plot data on second subplot
axs[1].plot([1, 2, 3], [6, 5, 4])

# show the plot
plt.show()
```

Once we have created the subplots, we can customize each of them independently, using the corresponding Axes object. For example, we can set the title and axis labels for each subplot, change the color or style of the lines, and so on.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1zyevd600q1gm4m1y6an.png)

## Advanced 3D Plots in Matplotlib
Matplotlib's mplot3d toolkit allows for creating 3D plots with ease. By importing the Axes3D class, we can create a 3D axes object to plot our data onto. Then, using the available 3D plot types such as plot_surface and scatter, we can visualize data in 3 dimensions.

Additionally, we can customize several aspects of the plot such as the viewpoint, the color map, and the axis labels. Overall, the mplot3d toolkit is a powerful tool for visualizing complex data in 3 dimensions and can add an extra dimension of insight to our data analysis.

Here's an example of how to create a 3D plot using Matplotlib:
```python
import matplotlib.pyplot as plt
import numpy as np

# Generate data
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# Create a 3D plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(X, Y, Z)

# Add labels and title
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')
plt.title('3D Plot')

# Display the plot
plt.show()
```

In this example, we generate data points in the x and y directions using np.linspace(), create a mesh grid using np.meshgrid(), and calculate the corresponding z-values based on a mathematical function (np.sin() in this case).

Next, we create a 3D plot by using fig = plt.figure() to create a figure object and ax = fig.add_subplot(111, projection='3d') to add a 3D subplot. Then, we plot the surface using ax.plot_surface() and pass in the generated x, y, and z values.

We add labels to the x-axis, y-axis, and z-axis using ax.set_xlabel(), ax.set_ylabel(), and ax.set_zlabel(), respectively. Finally, we set the title of the plot using plt.title().

By running this code, you will generate a 3D plot with a surface representing the z-values. The x-axis, y-axis, and z-axis labels and the plot title will provide additional context for interpretation.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9m3hlmrzrq289bq2g8uq.png)


## Animations in Matplotlib
Animations are a powerful way to convey a story or a message using data visualization. Matplotlib provides a simple and easy way to create animations through the FuncAnimation class.

FuncAnimation takes a function to update the data for each frame and a number of frames to render the animation. Each frame can be modified with various Matplotlib functions like adding or removing points, changing colors, or even adding annotations. The resulting animation can then be saved to different formats like GIF or MP4.

Here's an example of how to create a basic animation using Matplotlib:

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np

# Create a figure and axis
fig, ax = plt.subplots()

# Create initial empty plot
line, = ax.plot([], [], lw=2)

# Set axis limits
ax.set_xlim(0, 2*np.pi)
ax.set_ylim(-1, 1)

# Initialize the data
x_data = np.linspace(0, 2*np.pi, 100)
y_data = np.sin(x_data)

# Update function for animation
def update(frame):
    line.set_data(x_data[:frame], y_data[:frame])  # Update the data points
    return line,

# Create the animation
ani = animation.FuncAnimation(fig, update, frames=len(x_data), interval=50, blit=True)

# Display the animation
plt.show()

In this example, we create a basic animation that displays the plot of a sine wave growing progressively as the animation progresses.

We start by creating a figure and axis using plt.subplots(). Then, we create an initial empty plot using ax.plot() and store it in the line variable. We set the x-axis and y-axis limits using ax.set_xlim() and ax.set_ylim().

Next, we initialize the data for the animation, in this case, a sine wave. We define an update function update(frame) that takes the frame number as input and updates the plot's data points up to that frame using line.set_data(). The function returns the updated line object.

We create the animation using animation.FuncAnimation() and pass in the figure, the update function, the number of frames (equal to the length of the x_data), the interval between frames in milliseconds, and blit=True for improved performance.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q94kovvl7gw5nt0b1u3y.png)

## Saving plots in different formats
Matplotlib allows us to save our visualizations in various formats such as PNG, PDF, SVG, and more. To save an image, we use the savefig() method and specify the name of the file along with the file format extension. For example, to save a plot in PNG format, we can use the following code:

plt.savefig("myplot.png", dpi=300, bbox_inches='tight')

In this example, we're saving the plot as a PNG file with a resolution of 300 dots per inch (dpi). We're also using the bbox_inches='tight' parameter to ensure that any whitespace around the plot is removed before saving the image. Similarly, we can save the plot in other formats by simply changing the file extension in the savefig() method.

## Further Learning Resources
Here are some additional resources to help you continue learning about data visualization with Python's Matplotlib library:

- [Matplotlib Official Documentation](https://matplotlib.org/stable/contents.html): The official documentation is a great place to start. It includes tutorials, examples, and a comprehensive API reference.
- [Data Visualization with Matplotlib and Python Course on Coursera](https://www.coursera.org/projects/data-visualization-python-matplotlib): This project-based course on Coursera provides hands-on experience using Matplotlib to create a variety of visualizations.
- [Python Plotting With Matplotlib (Guide) on Real Python](https://realpython.com/python-matplotlib-guide/): This guide covers all the basics of Matplotlib and includes practical examples and tips.
- [Python Data Science Handbook by Jake VanderPlas](https://jakevdp.github.io/PythonDataScienceHandbook/04.00-introduction-to-matplotlib.html): This online book includes a detailed introduction to Matplotlib and other data visualization tools in Python.

## Learning Python with a [Python online compiler](https://www.lightly-dev.com/python/)
Learning a new programming language might be intimidating if you're just starting out. Lightly IDE, however, makes learning Python simple and convenient for everybody. [Lightly IDE](https://www.lightly-dev.com/) was made so that even complete novices may get started writing code.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v35s720kn0o2b3keiuua.png)


Lightly IDE's intuitive design is one of its many strong points. If you've never written any code before, don't worry; the interface is straightforward. You may quickly get started with Python programming with our Python online compiler only a few clicks.

The best part of Lightly IDE is that it is cloud-based, so your code and projects are always accessible from any device with an internet connection. You can keep studying and coding regardless of where you are at any given moment.

Lightly IDE is a great place to start if you're interested in learning Python. Learn and collaborate with other learners and developers on your projects and receive comments on your code now.

[Exploring Data Visualization with Python's Matplotlib Library](https://www.lightly-dev.com/blog/python-matplotlib-data-visualization/)