[matplotlib-devel] How to embed a matlibplot figure canvas into a pyqt4 GUI

2014-12-02 Thread Matthew Albert
Hi,
I've used Qt Designer to construct a GUI.  An element of the GUI is a 
QGridLayout.  I've been trying to display a matplotlib plot in this 
QGridLayout.  I'm new at Python and have been trying to figure this out for the 
last week without success.  Essentially I'm trying to use elements of the 
example shown here:user_interfaces example code: embedding_in_qt4.py — 
Matplotlib 1.4.2 documentation

in my code shown here:http://paste.ofcode.org/JA2Hm8cP4jYD4c9NXgVGaE

Lines 23-25 is the problem area.  The error I get now is:RuntimeError: 
super-class __init__() of type MyStaticMplCanvas was never called

Conceptually what I think I'm doing is:# Line 24  Create an object of type 
MyStaticMplCanvas called thePlot.  This object is essentially a QWidget.thePlot 
= MyStaticMplCanvas(self.main_widget)
# Line 25  Pass thePlot as an argument to the addWidget method of the 
gridLayout I created in Qt Designer.self.ui.gridLayout.addWidget(thePlot)

Thx for the help.  I've spent about twenty hour trying to figure out this 
myself.  Any help you can give me would be great!
Matt

--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


[matplotlib-devel] Matplotlib plot problem

2014-12-05 Thread Matthew Albert
I'm sure this is a simple problem, but I've been going around in circles 
several days trying to figure this out.  
Here's my code.http://pastebin.com/n83dGhG4

Basically, I'm trying to get my pyqt4 button signal to execute the plot command 
(line 122).  A lot of this code was copied from the matplotlib example page.  
If I uncomment line 148, the figure will successfully plot.  I don't understand 
why what I'm doing on line 122 isn't equivalent to line 148.
thx for your help.Matt--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel


Re: [matplotlib-devel] Matplotlib plot problem

2014-12-08 Thread Matthew Albert
Hi Benjamin and others:
Thx for your comments.  I've tried to follow your recommendations and simplify 
the code:http://pastebin.com/JHhkcCzt

Prior to these modifications I would at least see my axes render on the 
gridLayout object, but now that doesn't populate.  
Here's my attempt to talk through what I think is happening:LINE 9: I import 
the FigureCanvasQTAgg class.  A figureCanvas is an object on which we can 
attach figures, and subsequently axes and plots.  I guess since I want to embed 
this figureCanvas into a pyqt4 GUI, I'm importing a special type of 
figureCanvas from the backend_qtAgg library to do this??  Not sure if that's 
the case.
LINE 24: I want to create a FigureCanvas object called thePlot on which I will 
create a simple line plot.  It seems that in order to instantiate this new 
object, I need to pass a Figure object so I use LINE 24 to do that.  
LINE 25:  In this line I create a a FigureCanvas object called thePlot and pass 
the Figure I created in LINE 24.
LINE 26: My objective is to attached this plot to a pyqt4 GUI.  I've created a 
gridLayout on the GUI.  In this line I execute the addWidget method and pass 
thePlot object as argument.  A FigureCanvas is a QWidget apparently which makes 
this a reasonable thing to do I guess 
LINE 119: I'm now in the pushbutton signal function.  This line sets the parent 
of thePlot to None.  I have no idea what this does.  This is just something I 
put in there because I hoped it would help make things work.  Adding it didn't 
help.
LINE 120: Here I set the variable self.axes equal to the return of the fig 
function add_subplot.  This is something I just copied from an example.  I 
understand that add_subplot(111) creates one row and column of figures and 
selects the first one(from matlab), but I'm not really grasping what's really 
going on here.  I've followed the declaration of add_subplot and find that the 
function is return something called a subplot_class_factory.  I don't really 
know what this is either so I followed this declaration too.  I find that a 
subplot_class_factory is a function that creates a new class that inherits from 
SubplotBase.  Again I'm not sure what a subplotbase is and decide to just 
accept the original statement and hope it works.  Is looking at the 
declarations a reasonable way to figure out how things work in matplotlib?  I 
don't know a better strategy.  For somebody with so little experience, it's 
been very difficult to gain much benefit from.
Line 122: Lastly I attempt to plot.  I saw in an example that the .plot method 
is available from a subplotbase.  Here I try something very simple, just three 
numbers.
THE OUTCOME: The axes never rendered and the plot never appeared.  I really 
don't know why or how to troubleshoot this.  Does anybody have an idea why?
thxMatt

 

 On Friday, December 5, 2014 4:29 PM, Benjamin Root  wrote:
   

 I would look at line 24/25. You are constructing a MyStaticMplCanvas instance 
on 24, with a self.main_widget as the parent. But then on 25, you explicitly 
call the constructor again (which is not a good idea), but with the main window 
as the parent (the self argument). I bet that is throwing off a couple things.

The code is extremely hard to follow, and I think it is a bad example to build 
off of in the first place (unnescessary subclassing). Perhaps a different 
example would be more suitable? What programming language are you coming from?

Ben Root


On Fri, Dec 5, 2014 at 4:12 PM, Matthew Albert  wrote:

I'm sure this is a simple problem, but I've been going around in circles 
several days trying to figure this out.  
Here's my code.http://pastebin.com/n83dGhG4

Basically, I'm trying to get my pyqt4 button signal to execute the plot command 
(line 122).  A lot of this code was copied from the matplotlib example page.  
If I uncomment line 148, the figure will successfully plot.  I don't understand 
why what I'm doing on line 122 isn't equivalent to line 148.
thx for your help.Matt
--
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
___
Matplotlib-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel





   --
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivit