Subplots in Plotly#

Creating subplots in plotly is not supported using plotly-express. Instead, we have to manually build our figures using plotly graph objects Plotly Express usually hides this step from you. In plotly, when you create a scatter plot, the library is really creating a “scatter object” or variable.

To make a figure using subplots and plotly graph objects, we have to create these ourselves instead of letting plotly-express do it for us.

import pandas as pd

import plotly.graph_objects as go

from plotly.subplots import make_subplots
s_orbitals = pd.read_csv("s_orbitals_1D.csv")
s_orbitals.head()
r 1s 2s 3s
0 0.000000 0.564190 0.199471 0.108578
1 0.517241 0.336349 0.114183 0.061683
2 1.034483 0.200519 0.057408 0.029966
3 1.551724 0.119542 0.020580 0.009313
4 2.068966 0.071266 -0.002445 -0.003390
first_line = go.Scatter(x=s_orbitals["r"], y=s_orbitals["1s"], name="1s")
first_line
Scatter({
    'name': '1s',
    'x': array([ 0.        ,  0.51724138,  1.03448276,  1.55172414,  2.06896552,
                 2.5862069 ,  3.10344828,  3.62068966,  4.13793103,  4.65517241,
                 5.17241379,  5.68965517,  6.20689655,  6.72413793,  7.24137931,
                 7.75862069,  8.27586207,  8.79310345,  9.31034483,  9.82758621,
                10.34482759, 10.86206897, 11.37931034, 11.89655172, 12.4137931 ,
                12.93103448, 13.44827586, 13.96551724, 14.48275862, 15.        ]),
    'y': array([5.64189584e-01, 3.36348881e-01, 2.00518714e-01, 1.19541812e-01,
                7.12663894e-02, 4.24863751e-02, 2.53287993e-02, 1.51000896e-02,
                9.00211277e-03, 5.36672537e-03, 3.19944239e-03, 1.90738876e-03,
                1.13711435e-03, 6.77905355e-04, 4.04142001e-04, 2.40934455e-04,
                1.43636176e-04, 8.56305547e-05, 5.10497571e-05, 3.04339697e-05,
                1.81436027e-05, 1.08165422e-05, 6.44842084e-06, 3.84430907e-06,
                2.29183432e-06, 1.36630653e-06, 8.14541218e-07, 4.85599229e-07,
                2.89496230e-07, 1.72586903e-07])
})
second_line = go.Scatter(x=s_orbitals["r"], y=s_orbitals["2s"], name="2s")
third_line = go.Scatter(x=s_orbitals["r"], y=s_orbitals["3s"], name="3s")

Then, you must create a plotly figure and add these lines to the figure.

fig = make_subplots(rows=1, cols=3, shared_yaxes=True)
fig