import sys
from PyQt5.QtWidgets import *
import matplotlib.pyplot as plt
import numpy as np
from numpy.core.fromnumeric import size
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQtGraph")
self.setGeometry(100, 100, 600, 500)
self.grafico()
self.show()
def grafico(self):
btn = QPushButton('Push Button')
text = QLineEdit("Line Edit")
check = QCheckBox("Check Box")
# Aqui criamos a área que plotamos o gráfico e definimos seu tamanho
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw=dict(aspect="equal"))
# dados para compor o gráfico
recipe = ["Trigo", "Arroz", "Fijão", "Batata", "Aipim"]
# Definindo a quanbtidade de cada dado
data = [100, 250, 200, 120, 80]
# Aqui serão colocados os kg e as porcentagens no gráfico
def func(pct, allvals):
# calc %
np.absolute = int(pct/100.*np.sum(allvals))
# Fazendo legenda do grafico com % e kg
return "{:.1f}\n({:d} kg)".format(pct, np.absolute)
# Criando o gráfico e colocando a função da legenda interna
wedges, texts, autotexts = ax.pie(data, autopct=lambda pct: func(pct, data), textprops=dict(color='w'))
# Definindo a caixa de legenda externa, título, localização e onde vai ancorar o box
ax.legend(wedges, recipe, title="Produtos", loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
#Aqui definimos o tamanho do texto de dentro do gráfico, e o peso da fonte como bold
plt.setp(autotexts, size=8, weight="bold")
# Título do gráfico
ax.set_title("Quantidade de itens do Estoque em kg:")
self.layout = QVBoxLayout()
self.groupBoxLayout = QGridLayout()
self.groupBox = QGroupBox('Gráficos')
self.groupBox.setFlat(False)
# self.groupBoxLayout.addWidget(plt.setp)
self.groupBoxLayout.addWidget(btn)
self.groupBox.setLayout(self.groupBoxLayout)
self.layout.addWidget(self.groupBox)
self.setLayout(self.layout)
# self.layout.addWidget(text)
# self.layout.addWidget(check)
# self.layout.addWidget(btn)
# Mostra o gráfico
# plt.show()
if __name__== '__main__':
app = QApplication(sys.argv)
demo = AppDemo()
# demo.show()
try:
sys.exit(app.exec_())
except SystemExit:
print('Closing Window...')