Resumo : neste tutorial, você aprenderá como exibir um gráfico da biblioteca Matplotlib em um aplicativo Tkinter.
Exibir um gráfico de barras do matplotlib em aplicativos Tkinter
Matplotlib é uma biblioteca de terceiros para a criação de visualizações profissionais em Python. Como Matplotlib é uma biblioteca de terceiros, você precisa instalá-la antes de usar.
Para instalar o pacote matplotlib, você pode usar o seguinte pip
comando:
pip install matplotlib
Linguagem de código: Python ( python )
O programa a seguir usa matplotlib
para criar um gráfico de barras que mostra as cinco principais linguagens de programação por popularidade.
import tkinter as tk
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg,
NavigationToolbar2Tk
)
class App(tk.Tk):
def __init__(self):
super().__init__()
self.title('Tkinter Matplotlib Demo')
# prepare data
data = {
'Python': 11.27,
'C': 11.16,
'Java': 10.46,
'C++': 7.5,
'C#': 5.26
}
languages = data.keys()
popularity = data.values()
# create a figure
figure = Figure(figsize=(6, 4), dpi=100)
# create FigureCanvasTkAgg object
figure_canvas = FigureCanvasTkAgg(figure, self)
# create the toolbar
NavigationToolbar2Tk(figure_canvas, self)
# create axes
axes = figure.add_subplot()
# create the barchart
axes.bar(languages, popularity)
axes.set_title('Top 5 Programming Languages')
axes.set_ylabel('Popularity')
figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
if __name__ == '__main__':
app = App()
app.mainloop()
Linguagem de código: Python ( python )
Saída:
Como funciona.
Primeiro, importe o matplotlib
módulo
import matplotlib
Linguagem de código: Python ( python )
e chame a use()
função para informar qual backend será matplotlib
usado:
matplotlib.use('TkAgg')
Linguagem de código: Python ( python )
Neste caso utilizamos TkAgg
backend, que é feito para integração ao Tkinter.
Segundo, importe as seguintes classes Figure
, FigureCanvasTkAgg
e NavigationToolbar2Tk
:
from matplotlib.figure import Figure
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg,
NavigationToolbar2Tk
)
Linguagem de código: Python ( python )
A Figure
classe representa a área de desenho na qual matplotlib
os gráficos serão desenhados.
A FigureCanvasTkAgg
classe é uma interface entre o Figure
e o Tkinter Canvas
.
A NavigationToolbar2Tk
é uma barra de ferramentas integrada para a figura no gráfico.
Terceiro, prepare os dados para exibição no gráfico de barras:
data = {
'Python': 11.27,
'C': 11.16,
'Java': 10.46,
'C++': 7.5,
'C#': 5.26
}
languages = data.keys()
popularity = data.values()
Linguagem de código: Python ( python )
Os dados são um dicionário com as chaves são as linguagens de programação e os valores são sua popularidade em porcentagem.
Quarto, crie um Figure
para conter o gráfico:
figure = Figure(figsize=(6, 4), dpi=100)
Linguagem de código: Python ( python )
O Figure
objeto recebe dois argumentos: tamanho em polegadas e pontos por polegada (dpi). Neste exemplo, ele cria uma figura de 600×400 pixels.
Quinto, crie um FigureCanvasTkAgg
objeto que conecte o objeto com um objeto Figure
Tkinter :Canvas
figure_canvas = FigureCanvasTkAgg(figure, self)
Linguagem de código: Python ( python )
Observe que o FigureCanvasTkAgg
objeto não é um Canvas
objeto, mas contém um Canvas
objeto.
Sexto, crie uma matplotlib
barra de ferramentas integrada:
NavigationToolbar2Tk(figure_canvas, self)
Linguagem de código: Python ( python )
Sétimo, adicione uma subtrama à figura e retorne os eixos da subtrama:
axes = figure.add_subplot()
Linguagem de código: Python ( python )
Oitavo, crie um gráfico de barras chamando o bar()
método dos eixos e passando para ele os idiomas e a popularidade. Além disso, defina o título e o rótulo do eixo y:
axes.bar(languages, popularity)
axes.set_title('Top 5 Programming Languages')
axes.set_ylabel('Popularity')
Linguagem de código: Python ( python )
Finalmente, coloque o gráfico na janela raiz do Tkinter :
figure_canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)
Linguagem de código: Python ( python )
Resumo
- Use
matplotlib
a biblioteca para criar visualizações de qualidade profissional no aplicativo Tkinter.