Interactive Plots using Plotly Express (Part 1): Line Plot and 3D Scatter Plot

Written by Kevin Jacobs

I'm Kevin, a Data Scientist, PhD student in NLP and Law and blog writer for Data Blogger.

This blog series is a beginners’ tutorial on how you can make interactive plots in a Jupyter notebook using Plotly Express. In this first blog post on this topic, we will go through the steps needed for creating a basic line Python plot and a 3D scatter plot.

Basic line plot

The most simple plot is a line plot which is the first plot that we will create. We will start by importing the required libraries for Plotly:

import pandas as pd
import numpy as np
import chart_studio.plotly as py
import seaborn as sns
import plotly.express as px
import cufflinks as cf
%matplotlib inline

from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)
cf.go_offline()
The imports

Then, we can create a simple DataFrame based on random numbers (in a 25×3 matrix) and plot the results using Plotly:

df = pd.DataFrame(np.random.randn(25, 3), columns=['First', 'Second', 'Third'])
df.iplot()
Our first Plotly plot

And this is the result:

A basic line plot using Plotly Express.

3D Scatter Plot

We can also create a scatter plot in 3 dimensions. That is not possible using only Matplotlib. For this scatter plot, we will download stock data and plot the year on the x-axis, the month on the y-axis and the change on the z-axis. As color, we will use the trade volume.

import yfinance as yf

# Download and clean the data
df_aapl = yf.download('AAPL', start='2000-01-01', end='2021-12-01').reset_index()
df_aapl = df_aapl.assign(DateTime=pd.to_datetime(df_aapl.Date))
# Assign the year, month and weekday to the DataFrame
df_aapl = df_aapl.assign(year=df_aapl.DateTime.dt.year, month=df_aapl.DateTime.dt.month, weekday=df_aapl.DateTime.dt.weekday)
# Compute the percentage change
df_aapl = df_aapl.assign(change=df_aapl.Close.pct_change())
df_aapl.dropna()
# Remove outliers (with a change that is larger than 0.1)
df_aapl = df_aapl[df_aapl.change.apply(abs) < 0.1]
# Apply a log filter on the volume
df_aapl = df_aapl.assign(Volume=df_aapl.Volume.apply(np.log))

# Now we can create the 3D scatter plot!
fig = px.scatter_3d(df_aapl, x='year', y='month', z='change', color='Volume', size_max=1)
fig
3D scatter plot

This is the final result:

A 3D scatter plot for the AAPL stock during 2000 until 2021.

Here, you can see that the Apple stock (AAPL) was traded a lot around 2005, but less traded nowadays. If you have an interesting use case for 3D line plots or 3D scatter plots, please share it in the comments below.

Conclusion

This was part 1 of the “Interactive Plots using Plotly Express” series. If you have any suggestions for the next blog post, please let us know on Twitter.

Share this post on:

Get updates in your inbox

Join over 8,000 data science learners.

Get updates in your inbox

Join over 8,000 data science learners.

Share this post on