Search code examples
pythonplotlygauge

How to plot plotly gauge charts next to each other with python?


I have two gauge plots in my script and want to visualize them, side by side.

import plotly.graph_objects as go

fig1 = go.Figure(go.Indicator(mode="gauge+number",    value=400,    domain={'x': [0, 1], 'y': [0, 1]},    title={'text': "Speed 1"}))

fig2 = go.Figure(go.Indicator(mode="gauge+number",    value=250,    domain={'x': [0, 1], 'y': [0, 1]},    title={'text': "Speed 2"}))

How can show fig1 and fig2 side by side?


Solution

  • You're on the right track using the domain attribute, but your exact specifications are off. With the rest of the setup in the complete code below, the following specifications produces the associated plot:

    Domain specs

     domain={'x': [0.0, 0.4], 'y': [0.0, 1]}
    
     domain={'x': [0.6, 1.0], 'y': [0., 1.00]}
    

    Plot

    enter image description here

    Complete code

    import plotly
    import plotly.offline as py
    import plotly.graph_objs as go
    import plotly.express as px
    
    # traces with separate domains to form a subplot
    trace1 = go.Indicator(mode="gauge+number",    value=400,    domain={'x': [0.0, 0.4], 'y': [0.0, 1]},    title={'text': "Speed 1"})
    
    trace2 = go.Indicator(mode="gauge+number",    value=250,    domain={'x': [0.6, 1.0], 'y': [0., 1.00]},    title={'text': "Speed 2"})
    
    # layout and figure production
    layout = go.Layout(height = 600,
                       width = 600,
                       autosize = False,
                       title = 'Side by side gauge diagrams')
    fig = go.Figure(data = [trace1, trace2], layout = layout)
    fig.show()