Matplotlib - Widget de botão
No Matplotlib, um botão é um dos widgets importantes por meio do qual podemos realizar várias operações. Eles são usados principalmente para fazer um bom gráfico funcional com propriedades diferentes. Existem três tipos de botões
- Botão
- Botões do rádio
- Botões de verificação
Neste artigo, aprenderemos como usar diferentes botões no gráfico matplotlib. Para isso, vamos usar alguns dados, traçar um gráfico, formar um botão e usá-lo. Vamos entender os botões um por um com a ajuda de alguns exemplos.
Botão Simples
Este é um botão simples responsável por realizar apenas uma função.
Sintaxe: simple_button = Button()
Parâmetros:
- ax - define os eixos onde o botão deve estar localizado
- rótulo - o nome que queremos no botão
- cor - cor do botão
- cor flutuante - cor do botão quando ele é clicado
Neste exemplo, criaremos um botão simples e usaremos esse botão para adicionar mais uma linha ao gráfico existente.
# 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()
Saída:
Botao de radio
Este tipo de botão consiste em uma série de botões circulares que podem ser usados para habilitar / desabilitar uma das funções do nosso gráfico.
Sintaxe: radio_button = RadioButtons()
Parâmetros:
- ax - define os eixos onde o botão deve estar localizado
- rótulo - lista de nomes que desejamos em cada botão
- ativo - lista de booleanos que descrevem o estado de cada botão
- cor ativa - cor do botão ativo
Aqui, criamos um gráfico de pecado simples, onde os botões de opção mostram a cor da linha no gráfico.
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 visualization
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()
Saída:
Botão de verificação
Ao contrário do botão de rádio, onde podemos selecionar apenas uma opção, o botão de seleção nos permite selecionar várias opções. Este recurso é útil quando queremos realizar 2 ou mais funções no gráfico.
Sintaxe: check_button = CheckButtons()
Parâmetros:
- ax - define os eixos onde o botão deve estar localizado
- rótulo - lista de nomes que desejamos em cada botão
- ativos - lista de booleanos que descrevem o estado de cada botão
Criamos o mesmo gráfico como um botão simples, mas adicionamos mais 2 gráficos para o botão de verificação. Nós o traçamos simultaneamente.
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()
Saída:
Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva