Interactive Plots using Plotly Express: Line Plot and 3D Scatter Plot

Interactive Plots using Plotly Express: Line Plot and 3D Scatter Plot

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()

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()

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

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.