Perquisites: Python Plotly
In this article, we will learn how to plot on secondary y-Axis with plotly express.
One of the most deceptively-powerful features of Plotly data visualization is the ability for a viewer to quickly analyze a sufficient amount of information about data when pointing the cursor over the point label appears. It provides us the easiest way to read and analyze information from the document. Multi-Axis charts are used to plot data points from a query along two or more axes. Here we will discuss different methods to plot multiple y-axis in plotly express to make it more clear.
Syntax: yaxis=dict(title=”yaxis title”, overlaying=”y”, side=”left”, position=[0-1])
Parameters:
- title: str, (name of the axis)
- overlaying: str, (name of the bars are plotted over one another)
- side: [‘top’, ‘bottom’, ‘left’, ‘right’]
- position: int/float, [in range between 0-1].
Example 1: Two Y-Axis
In this example, we are taking two data plots, the first one is Bar chart and another is a Scatter chart. Update_layout the properties of the figure’s layout with a dict and/or with keyword arguments, In which we will define consecutive secondary yaxis (i.e yaxis, yaxis2 ) with the help of the above-given syntax for each axis.
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Bar(x = [ 1 , 2 , 3 ], y = [ 40 , 50 , 60 ],
name = "yaxis1 data" , yaxis = 'y' ))
fig.add_trace(go.Scatter(x = [ 2 , 3 , 4 ], y = [ 4 , 5 , 6 ],
name = "yaxis2 data" , yaxis = "y2" ))
# Create axis objects fig.update_layout(xaxis = dict (domain = [ 0.3 , 0.7 ]),
#create 1st y axis
yaxis = dict (
title = "yaxis title" ,
titlefont = dict (color = "#1f77b4" ),
tickfont = dict (color = "#1f77b4" )),
#create 2nd y axis
yaxis2 = dict (title = "yaxis2 title" ,overlaying = "y" ,
side = "left" ,position = 0.15 ))
# title fig.update_layout( title_text = "Geeksforgeeks - Three y-axes" ,
width = 800 ,
) fig.show() |
Output:
Example 2: Three Y-axis
In this example, we are taking three data plots, the first one is Bar chart and another is a Scatter chart and the last one is another Bar Chart. Update_layout the properties of the figure’s layout with a dict and/or with keyword arguments. In which we will define consecutive secondary y-axis (i.e yaxis, yaxis2, yaxis3… ) with the help of the above-given syntax for each axis
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Bar(x = [ 1 , 2 , 3 ], y = [ 4 , 5 , 6 ],
name = "yaxis1 data" , yaxis = 'y' ))
fig.add_trace(go.Scatter(x = [ 2 , 3 , 5 ], y = [ 40 , 50 , 60 ],
name = "yaxis2 data" , yaxis = "y2" ))
fig.add_trace(go.Bar(x = [ 4 , 5 , 6 ], y = [ 40000 , 50000 , 60000 ],
name = "yaxis3 data" , yaxis = "y3" ))
# Create axis objects fig.update_layout(xaxis = dict (domain = [ 0.3 , 0.7 ]),
# create 1st y axis
yaxis = dict (
title = "yaxis title" ,
titlefont = dict (color = "#1f77b4" ),
tickfont = dict (color = "#1f77b4" )),
# create 2nd y axis
yaxis2 = dict (title = "yaxis2 title" , overlaying = "y" ,
side = "left" , position = 0.15 ),
# create 3rd y axis
yaxis3 = dict (
title = "yaxis3 title" ,
anchor = "x" , overlaying = "y" , side = "right" ))
# title fig.update_layout( title_text = "Geeksforgeeks - Three y-axes" ,
width = 800 ,
) fig.show() |
Output:
Example 3: Four Y-axis
In this example, we are taking two data plots of Bar charts and two plots of Scatters charts. Update_layout the properties of the figure’s layout with a dict and/or with keyword arguments. In which we will define consecutive secondary y-axis (i.e yaxis, yaxis2, yaxis3, yaxis4 ) with the help of above-given syntax for each axis
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Bar(x = [ 1 , 2 , 3 ], y = [ 4 , 5 , 6 ],
name = "yaxis1 data" ))
fig.add_trace(go.Scatter(x = [ 2 , 3 , 4 ], y = [ 40 , 50 , 60 ],
name = "yaxis2 data" , yaxis = "y2" ))
fig.add_trace(go.Scatter(x = [ 4 , 5 , 6 ],
y = [ 40000 , 50000 , 60000 ],
name = "yaxis3 data" , yaxis = "y3" ))
fig.add_trace(go.Bar( x = [ 5 , 6 , 7 ], y = [ 400000 , 500000 , 600000 ],
name = "yaxis4 data" , yaxis = "y4" ))
# Create axis objects fig.update_layout( xaxis = dict (
domain = [ 0.3 , 0.7 ]
),
yaxis = dict (
title = "yaxis title" , titlefont = dict (color = "#1f77b4" ),
tickfont = dict (color = "#1f77b4" )),
yaxis2 = dict (
title = "yaxis2 title" ,
titlefont = dict (color = "#ff7f0e" ),
tickfont = dict (color = "#ff7f0e" ),
anchor = "free" , overlaying = "y" ,
side = "left" , position = 0.15 ),
yaxis3 = dict (
title = "yaxis3 title" ,
titlefont = dict (color = "#d62728" ),
tickfont = dict (color = "#d62728" ),
anchor = "x" , overlaying = "y" , side = "right" ),
yaxis4 = dict (
title = "yaxis4 title" ,
titlefont = dict (color = "#9467bd" ),
tickfont = dict (color = "#9467bd" ),
anchor = "free" , overlaying = "y" ,
side = "right" , position = 0.85 )
) # Update layout properties fig.update_layout( title_text = "Four y-axes" ,
width = 800 ,
) fig.show() |
Output: