How Do I Combine Two Plots into One Figure Using Plotly?

I have 2 csv files, my codes are as below.

df = pd.read_csv("test.csv",
             sep='\t',skiprows=range(9),names=['A', 'B', 'C','D'])

df2 = pd.read_csv("LoadMatch_Limit.csv",skiprows=range(1),names=['X','Y'])

fig = px.line([df,df2], x=['A','X'] , y=['D','Y'])

I would like my line chart, x-axis to take from (columns 'A' and 'X') and my y-axis to take from (columns 'D' and 'Y'). Is there anyway I can plot these 2 charts as one figure?

0

2 Answers

You could create the two plots and combine them with plotly graph objects

import plotly.express as px
import plotly.graph_objects as go

fig1 = px.line(df, x='A', y='D')
fig2 = px.line(df2, x='X', y='Y')

fig = go.Figure(data = fig1.data + fig2.data)
fig.show()

Plotly.offline has no attribute line. You need to use the graph object to plot two graphs in a single figure. A simple example is shown below(run the code below and see the output graph)

import numpy as np
import pandas as pd
import plotly.offline as py
import plotly.graph_objs as go
from plotly import tools

df1 = pd.DataFrame({"X":np.linspace(0,30,10), "Y":np.random.rand(10)})
df2 = pd.DataFrame({"A":np.linspace(0,40,10), "B":np.random.rand(10)})

# plotting the graphs...

# 'rgb(128, 0, 128)'
# color=sns.color_palette()
def scatter_chart(x, y, color, name):

   trace = go.Scatter(
             x=x.values,
             y=y.values,
             name=name,
   
             marker=dict(
                    color=color,
                    line=dict(
                    color=color,
                    width=1)
                  ),
              )
  return trace
trace1 = scatter_chart(df2["A"], df2["B"], 'rgb(128, 0, 128)', "df2")
trace2 = scatter_chart(df1["X"], df1["Y"], 'rgba(50, 171, 96, 0.6)', "df1")
fig = tools.make_subplots(rows=1,cols=1, vertical_spacing=0.5)
fig.add_trace(trace1)
fig.add_trace(trace2)

fig.update_layout(
title="df2 and df1 plot",
height=600, 
width=600, 
# annotations=annotations, 
xaxis=dict(tickangle=-45),
legend=dict(x=0.029, y=1.038, font_size=10),
margin=dict(l=100, r=20, t=70, b=70),
paper_bgcolor='rgb(248, 248, 255)',
plot_bgcolor='rgb(248, 248, 255)',)
py.iplot(fig, filename='pageviews_plots_4')

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Marcus Vance

Marcus Vance

Cybersecurity & Digital Privacy Researcher

Marcus Vance is a cybersecurity auditor and technology writer dedicated to educating the public about online safety, data privacy regulations, enterprise security, and emerging cyber threats.

Share this article
Twitter Facebook Pinterest