Skip to content
Related Articles

Related Articles

Matplotlib – Button Widget
  • Difficulty Level : Easy
  • Last Updated : 21 Apr, 2021

In Matplotlib a button is one of the important widgets by which we can perform various operations. They are mostly used for making a good functional graph having different properties. There are three types of buttons

  • Button
  • Radio Buttons
  • Check Buttons

In this article, we will learn how to use different buttons in the matplotlib plot. For this, we will use some data, plot a graph, then form a button and use it. Let’s understand buttons one by one with the help of some examples.

Simple Button

This is a simple button that is responsible for performing only one function. 

Syntax: simple_button=Button()

Parameters:



  • ax– defines the axes where the button should be located
  • label– the name that we want on the button
  • color– color of the button
  • hover color– color of the button when it gets clicked

In this example, we will create a simple button, and we will use this button to add one more line to the existing graph.

Python3




# importing libraries
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button
  
  
# creating data
x1=np.array([0,1,2,3])
y1=np.array([5,2,8,6])
  
# creating plot
fig = plt.figure()
ax = fig.subplots()
plt.subplots_adjust(left = 0.3, bottom = 0.25)
p,=ax.plot(x1,y1,color="blue", marker="o")
  
  
# defining function to add line plot
def add(val):
  x2=np.array([0,1,2,3])
  y2=np.array([10,2,0,12])
  ax.plot(x2,y2,color="green", marker="o")
  
  
# defining button and add its functionality
axes = plt.axes([0.81, 0.000001, 0.1, 0.075])
bnext = Button(axes, 'Add',color="yellow")
bnext.on_clicked(add)
plt.show()

Output:

Radio Button

This type of button consists of a series of circular buttons that can be used to enable/disable one of the functions of our graph. 

Syntax: radio_button=RadioButtons()

Parameters:

  • ax– defines the axes where the button should be located
  • label– list of names that we want on every button
  • active– list of booleans describing the state of each button
  • active color– color of the active button

Here we created a simple sin graph where the radio buttons show the color of the line in the plot.



Python3




import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons
    
    
# creating an array starting from 
# 0 to 1 with step size 0.01
t = np.arange(0.0, 1.0, 0.01)
    
# the values of sin values of t
s0 = np.sin(2*np.pi*t)
    
# depict visuliation
fig, ax = plt.subplots()
l, = ax.plot(t, s0, lw=2, color='red')
plt.subplots_adjust(left=0.3)
    
# adjust radio buttons
axcolor = 'lightgoldenrodyellow'
rax = plt.axes([0.05, 0.4, 0.15, 0.30], 
               facecolor=axcolor)
    
radio = RadioButtons(rax, ['red', 'blue', 'green'],
                     [True,False,False,False],
                     activecolor='r')
  
def color(labels):
    l.set_color(labels)
    fig.canvas.draw()
radio.on_clicked(color)
    
plt.show()

Output:

Check Button

Unlike Radio Button where we can select only one option, Check Button allows us to select multiple options. This feature is useful when we want to perform 2 or more functions on the plot. 

Syntax: check_button=CheckButtons()

Parameters:

  • ax– defines the axes where the button should be located
  • label– list of names that we want on every button
  • actives– list of booleans describing the state of each button

We created the same plot as a simple button but added 2 more graphs for the check button. We plotted it simultaneously.

Python3




import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Button, RadioButtons, CheckButtons
  
  
fig = plt.figure()
ax = fig.subplots()
plt.subplots_adjust(left=0.3, bottom=0.25)
  
x1 = np.array([0, 1, 2, 3])
y1 = np.array([5, 2, 8, 6])
p, = ax.plot(x1, y1, color="blue", marker="o")
  
x2 = np.array([0, 1, 2, 3])
y2 = np.array([10, 2, 0, 12])
p1, = ax.plot(x2, y2, color="green", marker="o")
  
x3 = np.array([0, 1, 2, 3])
y3 = np.array([0, 3, 2, 19])
p2, = ax.plot(x3, y3, color="yellow", marker="o")
lines = [p, p1, p2]
labels = ["plot1", "plot2", "plot3"]
  
  
def func(label):
    index = labels.index(label)
    lines[index].set_visible(not lines[index].get_visible())
    fig.canvas.draw()
  
  
label = [True, True, True]
  
# xposition, yposition, width and height
ax_check = plt.axes([0.9, 0.001, 0.2, 0.3])
plot_button = CheckButtons(ax_check, labels, label)
plot_button.on_clicked(func)
  
plt.show()

Output:

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :