Open In App

Matplotlib - Radio Buttons

Last Updated : 03 Jul, 2021
Comments
Improve
Suggest changes
2 Likes
Like
Report

Radio buttons let the user choose only one option between multiple options. These buttons are arranged in groups of two or more with a list of circular dots.  For the radio buttons to remain responsive you must keep a reference to this object.  We connect the RadioButtons with the on_clicked method to make it responsive.

Syntax:

matplotlib.widgets.RadioButtons(ax, labels, active=0, activecolor='blue')

Parameters:

  • ax: The axes to which the radio buttons add.
  • labels: button labels(list of str).
  • active: Index of the initially selected button.
  • activecolor: Color of the selected button.

Below are various examples that depict how to create and use radio buttons using matplotlib library.

Example 1:

Python3
# import required modules as numpy,
# matplotlib and radiobutton widget
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

# x and y-coordinates for graph creation
x = np.linspace(0, 2*np.pi, 200)
y = np.cos(x**2)

# Creating subplot and adjusting subplot
fig, ax = plt.subplots()
l, = ax.plot(x, y, color='yellow')
plt.subplots_adjust(left=0.4)
ax.set_title('Plot with RadioButtons',
             fontsize=18)

# sub-plot for radio button with 
# left, bottom, width, height values
rax = plt.axes([0.1, 0.15, 0.2, 0.2])
radio_button = RadioButtons(rax, ('yellow', 
                                  'red', 
                                  'blue', 
                                  'green'))

# function performed on switching the 
# radiobuttons
def colorfunc(label):
    l.set_color(label)
    plt.draw()


radio_button.on_clicked(colorfunc)

plt.show()

Output:

Example 2:

Python3
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

# plotting between the interval -π and π
x = np.linspace(-np.pi, np.pi)

# trigonometric functions to plot
p = 2*np.sin(x)
q = np.sin(x)
r = np.cos(x)
s = 2*np.cos(x)

fig, ax = plt.subplots()
l, = ax.plot(x, p, lw=3, color='green')
plt.subplots_adjust(left=0.3)

rax = plt.axes([0.05, 0.7, 0.15, 0.2])
radio = RadioButtons(rax, ('2sin(x)', 
                           'sin(x)', 
                           'cos(x)', 
                           '2cos(x)'))

# function performed on clicking the radio buttons
def sinefunc(label):
    sindict = {'2sin(x)': p, 
               'sin(x)': q, 
               'cos(x)': r, 
               '2cos(x)': s}
    data = sindict[label]
    l.set_ydata(data)
    plt.draw()


radio.on_clicked(sinefunc)

# plot grid
ax.grid()
plt.show()

Output:

Example 3:
 

Python3
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import RadioButtons

# plotting between the interval -π and π
x = np.linspace(-np.pi, np.pi)

# trigonometric functions to plot
p = 2*np.sin(x)
q = np.sin(x)
r = np.cos(x)
s = 2*np.cos(x)
fig, ax = plt.subplots()

l, = ax.plot(x, p, lw=3, color='red')
plt.subplots_adjust(left=0.3)

rax = plt.axes([0.05, 0.7, 0.15, 0.2])
radio = RadioButtons(rax, ('2sin(x)', 
                           'sin(x)', 
                           'cos(x)', 
                           '2cos(x)'))

# function performed on clicking the radio buttons
def sinefunc(label):
    sindict = {'2sin(x)': p, 
               'sin(x)': q, 
               'cos(x)': r, 
               '2cos(x)': s}
    data = sindict[label]
    l.set_ydata(data)
    plt.draw()


radio.on_clicked(sinefunc)

# plot grid
ax.grid()

# x and y-coordinates for graph creation
x = np.linspace(0, 2*np.pi, 200)
y = np.cos(x**2)

# sub-plot for radio button with 
# left, bottom, width, height values
rax2 = plt.axes([0.05, 0.15, 0.15, 0.2])
radio_button = RadioButtons(rax2, ('red', 
                                   'blue', 
                                   'green'))

# function performed on switching radiobuttons
def colorfunc(label2):
    l.set_color(label2)
    plt.draw()


radio_button.on_clicked(colorfunc)

plt.show()

Output:


Article Tags :

Explore