I'm trying to plot matplotlib plots in pyqt5 windows with navigation toolbar in order to show the next image on click using Figure Canvas. However the code is giving "image cannot converted to float" error on axes.plot. The data is coming from the csv which is then plotted using matplotlib.
# -*- coding: utf-8 -*-
from PyQt5 import QtCore, QtGui, QtWidgets
import matplotlib.pyplot as plt
import pandas as pd
from wordcloud import WordCloud
from matplotlib.backends.backend_qt5agg import FigureCanvas
from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar
df=pd.read_csv('Trump.csv')
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(640, 480)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.figure = plt.figure()
self.axes = self.figure.add_subplot(111)
# We want the axes cleared every time plot() is called
#self.axes.hold(False)
self.axes.clear()
self.canvas = FigureCanvas(self.figure)
self.canvas.setParent(self)
self.canvas.move(100,20)
self.canvas.hide()
self.toolbar = NavigationToolbar(self.canvas, self)
self.toolbar.hide()
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 640, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.setupUi(self)
self.show()
def show(self):
wordcloud = WordCloud(random_state=21, max_font_size=110).generate(str(df['Tweets']))
plot2= plt.imshow(wordcloud, interpolation="bilinear")
self.canvas.show()
self.axes.imshow(plot2)
self.canvas.draw()
self.setScene(scene)
plot3=sns.countplot(x = 'Vader', data = df)
self.canvas.show()
self.axes.imshow(plot3)
self.canvas.draw()
self.setScene(scene)
#self.graphicsView.addItem((plt.imshow(wordcloud)))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Any help will be highly appreciated!
