How to Use Plotly for Interactive Data Visualization in Python

Interactive data visualization is an important tool for analyzing and presenting data. Plotly is a powerful Python library that allows you to create interactive and customizable visualizations. In this tutorial, we will explore how to use Plotly to create interactive data visualizations in Python.

Installing Plotly

To get started, you need to install Plotly. You can install it using pip, the Python package installer, by running the following command in your terminal:

pip install plotly

Plotly also requires an internet connection to render the visualizations. If you are working in an offline environment, you can use the plotly.offline module to save the visualizations as HTML files.

Getting Familiar with Plotly

Before we dive into creating visualizations with Plotly, let’s get familiar with its basic concepts and features.

Figures and Traces

The core components of Plotly visualizations are figures and traces. A figure is the overall container for everything that you want to display on a plot, and a trace is a specific type of visualization, such as a line chart, bar chart, or scatter plot.

A figure can contain one or more traces. For example, you can create a figure with a line chart trace and a scatter plot trace. Each trace can be customized with its own unique settings.

Plotly Express

Plotly provides a higher-level interface called Plotly Express, which makes it even easier to create interactive visualizations. Plotly Express provides a set of pre-defined functions that allow you to create complex visualizations with just a few lines of code.

Creating Basic Line Charts

Let’s start by creating a basic line chart using Plotly. We will use the fictional sales data of a company over time.

import plotly.express as px

# Create the data
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
sales = [100, 120, 110, 130, 150, 140]

# Create the figure and trace
fig = px.line(x=months, y=sales)

# Display the figure
fig.show()

In this example, we first import the plotly.express module as px. We then create the data for the x-axis (months) and y-axis (sales). We pass this data to the px.line() function to create the line chart trace. Finally, we use the fig.show() method to display the figure.

You can interact with the resulting line chart by hovering over the data points to see their values, zooming in and out, and panning around the chart.

Customizing Line Charts

Plotly allows you to customize various elements of your line charts, such as the title, axis labels, and colors.

import plotly.express as px

# Create the data
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
sales1 = [100, 120, 110, 130, 150, 140]
sales2 = [80, 90, 100, 110, 120, 130]

# Create the figure and traces
fig = px.line()
fig.add_trace(px.line(x=months, y=sales1, name='Company A'))
fig.add_trace(px.line(x=months, y=sales2, name='Company B'))

# Customize the chart
fig.update_layout(
    title='Monthly Sales',
    xaxis=dict(title='Month'),
    yaxis=dict(title='Sales'),
    plot_bgcolor='rgba(0, 0, 0, 0)',
    paper_bgcolor='rgba(0, 0, 0, 0)'
)

# Display the figure
fig.show()

In this example, we create two sets of sales data for two different companies. We add them as separate line chart traces to the figure by calling the fig.add_trace() method twice. We also provide names for each trace.

The fig.update_layout() method is used to customize the overall chart. We set the title, x-axis label, y-axis label, plot background color, and paper background color.

Creating Bar Charts

Plotly makes it easy to create bar charts using the px.bar() function. Let’s create a basic bar chart to visualize the average temperature in different cities.

import plotly.express as px

# Create the data
cities = ['New York', 'San Francisco', 'Chicago', 'Los Angeles']
average_temp = [62, 68, 55, 78]

# Create the figure and trace
fig = px.bar(x=cities, y=average_temp)

# Display the figure
fig.show()

In this example, we create the data for the x-axis (cities) and y-axis (average temperature). We pass this data to the px.bar() function to create the bar chart trace. Finally, we use the fig.show() method to display the figure.

Customizing Bar Charts

You can customize various aspects of your bar charts using Plotly. Let’s see an example where we customize the bar colors and add a title and axis labels.

import plotly.express as px

# Create the data
cities = ['New York', 'San Francisco', 'Chicago', 'Los Angeles']
average_temp = [62, 68, 55, 78]

# Create the figure and trace
fig = px.bar(x=cities, y=average_temp)

# Customize the chart
fig.update_layout(
    title='Average Temperature',
    xaxis=dict(title='City'),
    yaxis=dict(title='Temperature'),
    plot_bgcolor='rgba(0, 0, 0, 0)',
    paper_bgcolor='rgba(0, 0, 0, 0)'
)

# Customize the trace
fig.update_traces(marker=dict(color='rgb(0, 123, 255)'))

# Display the figure
fig.show()

In this example, we create the data for the x-axis (cities) and y-axis (average temperature). We provide this data to the px.bar() function to create the bar chart trace. We then use the fig.update_layout() method to customize the overall chart by setting the title, x-axis label, y-axis label, plot background color, and paper background color.

The fig.update_traces() method is used to customize the trace. We set the color of the bars to rgb(0, 123, 255).

Creating Scatter Plots

Plotly allows you to create scatter plots using the px.scatter() function. Let’s create a basic scatter plot to visualize the correlation between the age and income of a group of individuals.

import plotly.express as px

# Create the data
age = [25, 32, 28, 45, 36, 33, 29, 28, 36, 39]
income = [50000, 60000, 55000, 75000, 65000, 62000, 56000, 54000, 65000, 70000]

# Create the figure and trace
fig = px.scatter(x=age, y=income)

# Display the figure
fig.show()

In this example, we create the data for the x-axis (age) and y-axis (income). We pass this data to the px.scatter() function to create the scatter plot trace. Finally, we use the fig.show() method to display the figure.

Customizing Scatter Plots

You can customize various elements of your scatter plots using Plotly. Let’s customize the marker size and color, and add a title and axis labels.

import plotly.express as px

# Create the data
age = [25, 32, 28, 45, 36, 33, 29, 28, 36, 39]
income = [50000, 60000, 55000, 75000, 65000, 62000, 56000, 54000, 65000, 70000]

# Create the figure and trace
fig = px.scatter(x=age, y=income)

# Customize the chart
fig.update_layout(
    title='Age vs Income',
    xaxis=dict(title='Age'),
    yaxis=dict(title='Income'),
    plot_bgcolor='rgba(0, 0, 0, 0)',
    paper_bgcolor='rgba(0, 0, 0, 0)'
)

# Customize the trace
fig.update_traces(
    marker=dict(
        size=10,
        color='rgba(255, 123, 0, 0.8)',
        line=dict(width=1, color='rgb(0, 0, 0)')
    )
)

# Display the figure
fig.show()

In this example, we create the data for the x-axis (age) and y-axis (income). We pass this data to the px.scatter() function to create the scatter plot trace. We then use the fig.update_layout() method to customize the overall chart by setting the title, x-axis label, y-axis label, plot background color, and paper background color.

The fig.update_traces() method is used to customize the trace. We set the size of the markers to 10, the color to rgba(255, 123, 0, 0.8), and the line width and color to 1 and rgb(0, 0, 0) respectively. This creates markers with an orange color, a black border, and a size of 10.

Adding Annotations

Plotly allows you to add annotations to your visualizations to provide additional information or insights. Annotations can be added to specific data points or to the overall figure.

Let’s see an example where we add annotations to a scatter plot to highlight specific data points.

import plotly.express as px

# Create the data
age = [25, 32, 28, 45, 36, 33, 29, 28, 36, 39]
income = [50000, 60000, 55000, 75000, 65000, 62000, 56000, 54000, 65000, 70000]
names = ['John', 'Kate', 'Mike', 'Emily', 'Chris', 'Sarah', 'Alex', 'Amy', 'Mark', 'Linda']

# Create the figure and trace
fig = px.scatter(x=age, y=income, text=names)

# Customize the chart
fig.update_layout(
    title='Age vs Income',
    xaxis=dict(title='Age'),
    yaxis=dict(title='Income'),
    plot_bgcolor='rgba(0, 0, 0, 0)',
    paper_bgcolor='rgba(0, 0, 0, 0)'
)

# Customize the trace
fig.update_traces(
    marker=dict(
        size=10,
        color='rgba(255, 123, 0, 0.8)',
        line=dict(width=1, color='rgb(0, 0, 0)')
    )
)

# Add annotations
for i in range(len(age)):
    fig.add_annotation(
        x=age[i],
        y=income[i],
        text=names[i],
        showarrow=True,
        arrowhead=1,
        arrowcolor='rgb(0, 0, 0)'
    )

# Display the figure
fig.show()

In this example, we create the data for the x-axis (age), y-axis (income), and text (names). We pass this data to the px.scatter() function to create the scatter plot trace. We then use the fig.update_layout() method to customize the overall chart.

The fig.update_traces() method is used to customize the trace. We set the size of the markers, the color, and the line properties.

To add annotations, we use a loop to iterate over the data points. We use the fig.add_annotation() method to add an annotation at each data point by specifying the x and y coordinates, text to display, and arrow properties.

Creating Pie Charts

Plotly allows you to create pie charts using the px.pie() function. Let’s create a basic pie chart to visualize the market share of different smartphone brands.

import plotly.express as px

# Create the data
brands = ['Apple', 'Samsung', 'Huawei', 'Xiaomi', 'Oppo']
market_share = [33, 28, 16, 12, 11]

# Create the figure and trace
fig = px.pie(names=brands, values=market_share)

# Display the figure
fig.show()

In this example, we create the data for the names (brands) and values (market share) of the pie chart. We pass this data to the px.pie() function to create the pie chart trace. Finally, we use the fig.show() method to display the figure.

Customizing Pie Charts

You can customize various aspects of your pie charts using Plotly. Let’s customize the colors and add a title.

import plotly.express as px

# Create the data
brands = ['Apple', 'Samsung', 'Huawei', 'Xiaomi', 'Oppo']
market_share = [33, 28, 16, 12, 11]

# Create the figure and trace
fig = px.pie(names=brands, values=market_share)

# Customize the chart
fig.update_layout(
    title='Smartphone Market Share',
    plot_bgcolor='rgba(0, 0, 0, 0)',
    paper_bgcolor='rgba(0, 0, 0, 0)'
)

# Customize the trace
fig.update_traces(
    marker=dict(
        colors=['rgb(0, 123, 255)', 'rgb(40, 167, 69)', 'rgb(255, 193, 7)', 'rgb(220, 53, 69)', 'rgb(108, 117, 125)']
    )
)

# Display the figure
fig.show()

In this example, we create the data for the names (brands) and values (market share) of the pie chart. We pass this data to the px.pie() function to create the pie chart trace. We also use the fig.update_layout() method to customize the overall chart by setting the title, plot background color, and paper background color.

The fig.update_traces() method is used to customize the trace. We set the colors of the pie slices to specific RGB values.

Saving Visualizations as HTML Files

If you are working in an offline environment or want to share your visualizations as standalone HTML files, Plotly provides a way to save your figures as HTML files using the plotly.offline module.

import plotly.express as px
from plotly.offline import plot

# Create the data
months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']
sales = [100, 120, 110, 130, 150, 140]

# Create the figure and trace
fig = px.line(x=months, y=sales)

# Save the figure as an HTML file
plot(fig, filename='line_chart.html')

In this example, we create the data for the x-axis (months) and y-axis (sales). We pass this data to the px.line() function to create the line chart trace. We then use the plot() function from the plotly.offline module to save the figure as an HTML file.

Conclusion

Plotly is a powerful Python library for creating interactive and customizable data visualizations. In this tutorial, we explored how to create basic line charts, bar charts, scatter plots, and pie charts using Plotly. We also learned how to customize the charts and add annotations. Finally, we saw how to save the visualizations as standalone HTML files. With these techniques, you can create stunning interactive visualizations to analyze and present your data.

Related Post