SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
(3)
Jun
Jul
Aug
(12)
Sep
(12)
Oct
(56)
Nov
(65)
Dec
(37)
2004 Jan
(59)
Feb
(78)
Mar
(153)
Apr
(205)
May
(184)
Jun
(123)
Jul
(171)
Aug
(156)
Sep
(190)
Oct
(120)
Nov
(154)
Dec
(223)
2005 Jan
(184)
Feb
(267)
Mar
(214)
Apr
(286)
May
(320)
Jun
(299)
Jul
(348)
Aug
(283)
Sep
(355)
Oct
(293)
Nov
(232)
Dec
(203)
2006 Jan
(352)
Feb
(358)
Mar
(403)
Apr
(313)
May
(165)
Jun
(281)
Jul
(316)
Aug
(228)
Sep
(279)
Oct
(243)
Nov
(315)
Dec
(345)
2007 Jan
(260)
Feb
(323)
Mar
(340)
Apr
(319)
May
(290)
Jun
(296)
Jul
(221)
Aug
(292)
Sep
(242)
Oct
(248)
Nov
(242)
Dec
(332)
2008 Jan
(312)
Feb
(359)
Mar
(454)
Apr
(287)
May
(340)
Jun
(450)
Jul
(403)
Aug
(324)
Sep
(349)
Oct
(385)
Nov
(363)
Dec
(437)
2009 Jan
(500)
Feb
(301)
Mar
(409)
Apr
(486)
May
(545)
Jun
(391)
Jul
(518)
Aug
(497)
Sep
(492)
Oct
(429)
Nov
(357)
Dec
(310)
2010 Jan
(371)
Feb
(657)
Mar
(519)
Apr
(432)
May
(312)
Jun
(416)
Jul
(477)
Aug
(386)
Sep
(419)
Oct
(435)
Nov
(320)
Dec
(202)
2011 Jan
(321)
Feb
(413)
Mar
(299)
Apr
(215)
May
(284)
Jun
(203)
Jul
(207)
Aug
(314)
Sep
(321)
Oct
(259)
Nov
(347)
Dec
(209)
2012 Jan
(322)
Feb
(414)
Mar
(377)
Apr
(179)
May
(173)
Jun
(234)
Jul
(295)
Aug
(239)
Sep
(276)
Oct
(355)
Nov
(144)
Dec
(108)
2013 Jan
(170)
Feb
(89)
Mar
(204)
Apr
(133)
May
(142)
Jun
(89)
Jul
(160)
Aug
(180)
Sep
(69)
Oct
(136)
Nov
(83)
Dec
(32)
2014 Jan
(71)
Feb
(90)
Mar
(161)
Apr
(117)
May
(78)
Jun
(94)
Jul
(60)
Aug
(83)
Sep
(102)
Oct
(132)
Nov
(154)
Dec
(96)
2015 Jan
(45)
Feb
(138)
Mar
(176)
Apr
(132)
May
(119)
Jun
(124)
Jul
(77)
Aug
(31)
Sep
(34)
Oct
(22)
Nov
(23)
Dec
(9)
2016 Jan
(26)
Feb
(17)
Mar
(10)
Apr
(8)
May
(4)
Jun
(8)
Jul
(6)
Aug
(5)
Sep
(9)
Oct
(4)
Nov
Dec
2017 Jan
(5)
Feb
(7)
Mar
(1)
Apr
(5)
May
Jun
(3)
Jul
(6)
Aug
(1)
Sep
Oct
(2)
Nov
(1)
Dec
2018 Jan
Feb
Mar
Apr
(1)
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2020 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2025 Jan
(1)
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S





1
(2)
2
(1)
3
(17)
4
(9)
5
(2)
6
(5)
7
(8)
8
(11)
9
(6)
10
(6)
11
(21)
12
(21)
13
(17)
14
(25)
15
(15)
16
(2)
17
18
(9)
19
(22)
20
(25)
21
(31)
22
(19)
23
(2)
24
(5)
25
(19)
26
(10)
27
(13)
28
(14)
29
(20)
30
(5)
31
(9)






Showing 8 results of 8

From: Renato A. <rj...@ig...> - 2010年01月07日 21:14:31
What I'm trying to accomplish is something like:
http://bm2.genes.nig.ac.jp/RGM2/R_current/library/plotrix/man/images/big_pyramid.plot_001.png
For that I was trying to use subplots where both draw in horizontal
orientation but one will be flipped or mirrored.
I couldn't find any parameter to do so. There is left for horizontal
plots but no right. The same goes for bottom, but no top.
Is there any way to achieve this?
Thanks,
Renato
From: Alexander H. <so...@gm...> - 2010年01月07日 20:40:22
Hi, thanks for having a look at this.
Problem is that a scatter plot doesn't seem to have the option to actually
update the data, or at least I couldn't find it.
Is there maybe a way?
On Thu, Jan 7, 2010 at 2:58 AM, Laurent Dufrechou <
lau...@gm...> wrote:
> Hi alexander,
>
>
>
> I tryed yesterday to play a little with your script.
>
> I suspect that in fact each time you draw a figure, it is added to a pool
> of figure to be rendered.
>
> Thus it goes slower and slower.
>
>
>
> What I do in my scritpt is either update the datas or if the drawing is a
> completely new one (like a polar ionstaed of log previously) I delete the
> figure.
>
>
>
> To update data use:
>
>
>
> 1/self._plot, = axe.plot(x, y, 'b', animated=self._animated)
>
>
>
> Later:
>
> Loop:
>
> 2/self._plot.set_ydata(self._value)
>
>
>
>
>
> If you need to delete your figure (that is not your case, but who knows for
> the future):
>
> axe = fig.add_axes(self.getPosition())
>
> ...
>
> self._fig.delaxes(self._axe)
>
>
>
> To go even faster(x10) you have the blitting method, but set_ydata should
> be sufficent.
>
>
>
> Laurent
>
>
>
> *De :* Alexander Hupfer [mailto:so...@gm...]
> *Envoyé :* jeudi 7 janvier 2010 03:36
> *C**c :* mat...@li...
> *Objet :* Re: [Matplotlib-users] Colorbar embedding in qt4
>
>
>
> I isolated the problem a bit more. For some reason drawing gets slower and
> slower with each plot drawn.
>
> from os import sys
> from time import time
> from PyQt4 import QtGui, QtCore
>
> import matplotlib
>
> matplotlib.use('QT4Agg')
>
> from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as
> FigureCanvas
> from matplotlib.figure import Figure
>
>
> class MyMplCanvas(FigureCanvas):
> """Ultimately, this is a QWidget (as well as a FigureCanvasAgg,
> etc.)."""
> def __init__(self, parent=None, width=5, height=4, dpi=100):
> fig = Figure(figsize=(width, height), dpi=dpi)
> self.axes = fig.add_subplot(111)
> # We want the axes cleared every time plot() is called
> self.axes.hold(False)
>
> self.compute_initial_figure()
>
> #
> FigureCanvas.__init__(self, fig)
> self.setParent(parent)
>
> FigureCanvas.setSizePolicy(self,
> QtGui.QSizePolicy.Expanding,
> QtGui.QSizePolicy.Expanding)
> FigureCanvas.updateGeometry(self)
>
> def compute_initial_figure(self):
> pass
>
> class MyDynamicMplCanvas(MyMplCanvas):
> """A canvas that updates itself every second with a new plot."""
> def __init__(self, *args, **kwargs):
> MyMplCanvas.__init__(self, *args, **kwargs)
> timer = QtCore.QTimer(self)
> QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"),
> self.update_figure)
> timer.start(0)
> self.firstrun = True
> self.colorbar = None
> self.time = time()
> self.p = None
> def compute_initial_figure(self):
> pass
>
> def update_figure(self):
> self.p = self.axes.scatter([1,2,3],[4,5,6], c = range(3),
> animated=True)
> self.axes.set_xlabel('psi')
> self.axes.set_ylabel('delta')
> if self.firstrun == True:
> self.colorbar = self.axes.figure.colorbar(self.p)
> self.firstrun = False
> self.colorbar.set_clim(vmin=0,vmax=2)
> self.colorbar.draw_all()
> self.colorbar.set_label('time [abtr. ]')
> self.draw()
> newtime = time()
> print newtime - self.time
> self.time = newtime
>
> class ApplicationWindow(QtGui.QMainWindow):
> def __init__(self):
> QtGui.QMainWindow.__init__(self)
> self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
>
> self.main_widget = QtGui.QWidget(self)
>
> l = QtGui.QVBoxLayout(self.main_widget)
>
> dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4,
> dpi=100)
>
> l.addWidget(dc)
>
> self.main_widget.setFocus()
> self.setCentralWidget(self.main_widget)
>
>
> qApp = QtGui.QApplication(sys.argv)
>
> aw = ApplicationWindow()
> aw.setWindowTitle("%s" % "Slow!")
> aw.setGeometry(100,100,800,600)
> aw.show()
> sys.exit(qApp.exec_())
>
> On Mon, Jan 4, 2010 at 3:36 PM, Alexander Hupfer <so...@gm...> wrote:
>
> Ok, here is the code as a whole. I think it's still short enough to
> ilustrate the problem. Just start it with the datafile "elips" as an
> argument
>
> http://dl.dropbox.com/u/226980/elipsometry.tar.gz
>
> The timer shows how long each render cycle takes. The time seems to grow
> with number of cycles rendered even when no more points are added (the
> points are calculated with a continous rate in a background thread and are
> about 300 total).
>
>
>
> On Sun, Jan 3, 2010 at 8:16 PM, John Hunter <jd...@gm...> wrote:
>
> On Sun, Jan 3, 2010 at 7:02 PM, Alexander Hupfer <so...@gm...> wrote:
> > Thanks I got it fixed.
> > This leads to the follow up question:
> > What is the right way to keep an application responsive while the graph
> is
> > drawn?
> > Drawing a scatter plot with 300 points seems to take a while. I guess I
> need
> > to launch the drawing in another thread but don't know exactly how to do
> > this and only find examples of doing calculations in the background and
> not
> > actual widget interaction.
>
> You posted some real code and a traceback, which helped move the ball
> forward. What we really need to see to help you though is a complete,
> free-standing example, that we can run on our machines, which exposes
> the problem.
>
> JDH
>
>
>
>
>
From: James <j3...@gm...> - 2010年01月07日 17:53:29
Has anyone managed to plot a candlestick chart with a
scikits.timeseries? Is there an easy way to wrap the
matplotlib.finance.candlestick call?
James
From: Eric E. <eem...@es...> - 2010年01月07日 16:15:58
Hi
I finally managed to write a simplified version of my python script
which crashes when trying to save the figure as a postscript file. (this
is related to a previous post). See below. The script is provided, as
well as the full error message.
Sorry for the long script, but basically I am plotting 3x7 arrays via
pcolormesh. The script looks pretty dum because it was adapted from a
more complicated one where the bins/pixels are not exactly squared and
are rotated. In the version below I have tried to remove the unncessary
complication. And I get a failure from ghostscript when I try to save it
as eps. It works when I save it as a png.
Can anyone tell me what's wrong there? Again I am using:
### On an OpenSuse 11.2, 64b
xpdf distiller (but I tried others).
matplotlib 0.99.1.1
backend WXAgg version 2.8.10.1
Python 2.6.2 (r262:71600, Oct 24 2009, 03:15:21)
IPython 0.10 -- An enhanced Interactive Python.
THANKS
Eric
====================================================================
######################################################################
# Script to run which crashes when saving the figure as an eps file
######################################################################
#!/usr/bin/python
import numpy as num
import pylab as pl
def pos(i,j, w, h) :
 return [0.05+ j*(w+0.02), 0.99 - (i+1)*(h+0.023)+0.025, w, h]
## Opening the figure
## Figure
pl.figure(1, figsize=(5*1.2, 7*1.5))
fig = pl.gcf()
pl.clf()
## Size of figure
figH = fig.get_figheight()
figW = fig.get_figwidth()
w = 0.99 / 3. -0.03
h = 0.99 / 7 - 0.022
## List of data to plot (I take 7 times the same stuff)
listgal = ["1","2","3","4","5","6",",7"]
## Initialisation of start, end and step
ngal = len(listgal)
start = [-30.,-30.]
end = [30.,30.]
npix = [80,80]
x = num.linspace(start[0],end[0], npix[0])
y = num.linspace(start[1],end[1], npix[1])
step = [x[1]-x[0], y[1]-y[0]]
X,Y = num.meshgrid(x,y)
## Initialisation of data
data = num.random.random((npix[0], npix[1]))
pl.ioff()
for k in range(ngal) :
 gal = listgal[k]
 ## Coordinates
 ## Grid for rotation
 Xp,Yp = X - step[0]/2., Y - step[1]/2.
 X1,Y1 = X+step[0]/2.,Y+step[1]/2.
 X2,Y2 = X-step[0]/2.,Y+step[1]/2.
 X3,Y3 = X-step[0]/2.,Y-step[1]/2.
 X4,Y4 = X+step[0]/2.,Y-step[1]/2.
 minXc = num.min(num.concatenate((X1,X2,X3,X4)))
 maxXc = num.max(num.concatenate((X1,X2,X3,X4)))
 minYc = num.min(num.concatenate((Y1,Y2,Y3,Y4)))
 maxYc = num.max(num.concatenate((Y1,Y2,Y3,Y4)))
 dX = maxXc - minXc
 dY = maxYc - minYc
 ## Deriving the right aspect ratio etc
 aspectIma = dX / dY
 aspectFig = figW / figH
 aspectWin = w / h
 if (aspectIma < aspectWin*aspectFig) :
 maxXc = maxXc * aspectFig * aspectWin / aspectIma
 minXc = minXc * aspectFig * aspectWin / aspectIma
 else :
 maxYc = maxYc * aspectIma / (aspectFig * aspectWin)
 minYc = minYc * aspectIma / (aspectFig * aspectWin)
 extentR = minXc, maxXc, minYc, maxYc
 cmap = pl.cm.jet
 minI, maxI = 0., 1.
 cmap.set_bad('w',1.0)
 j = 0
 ax1 = fig.add_axes(pos(k,j, w, h))
 map1 = ax1.pcolormesh(Xp,Yp,data,shading='flat',vmin=minI,vmax=maxI,
cmap=cmap)
 pl.plot([0.],[0.],'k+', markersize=10, lw=3)
 xticklabels = pl.getp(pl.gca(), 'xticklabels')
 pl.setp(xticklabels, fontsize=8)
 yticklabels = pl.getp(pl.gca(), 'yticklabels')
 pl.setp(yticklabels, fontsize=8)
 pl.axis(extentR)
 j += 1
 ax2 = fig.add_axes(pos(k,j, w, h))
 map2 = ax2.pcolormesh(Xp,Yp,data,shading='flat',vmin=minI,vmax=maxI,
cmap=cmap)
 pl.plot([0.],[0.],'k+', markersize=10, lw=3)
 pl.axis(extentR)
 ax2.set_yticks([])
 xticklabels = pl.getp(pl.gca(), 'xticklabels')
 pl.setp(xticklabels, fontsize=8)
 pl.text(0.02,0.96, "%4.0f/%4.0f"%(minI,maxI),
verticalalignment='top',rotation='vertical',transform = ax2.transAxes,
fontsize=8)
 j += 1
 ax3 = fig.add_axes(pos(k,j, w, h))
 map2 = ax3.pcolormesh(Xp,Yp,data,shading='flat',vmin=0.,vmax=1.,
cmap=cmap)
 pl.plot([0.],[0.],'k+', markersize=10, lw=3)
 pl.axis(extentR)
 ax3.set_yticks([])
 xticklabels = pl.getp(pl.gca(), 'xticklabels')
 pl.setp(xticklabels, fontsize=8)
 pl.text(0.02,0.96, "%4.0f/%4.0f"%(minI,maxI),
verticalalignment='top',rotation='vertical',transform = ax3.transAxes,
fontsize=8)
 j += 1
 pl.text(0.92,0.5, gal,
rotation='vertical',verticalalignment='center',transform = ax3.transAxes)
 k += 1
pl.ion()
pl.show()
#######################################################################
## ERROR MESSAGE WHEN DOING:
## savefig("tmp.eps")
########################################################################
savefig("toto.eps")
Error: /limitcheck in --def--
Operand stack:
 pa_c2c --nostringval--
Execution stack:
 %interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
 --nostringval-- false 1 %stopped_push 1878 1 3
%oparray_pop 1877 1 3 %oparray_pop 1861 1 3 %oparray_pop
 1755 1 3 %oparray_pop --nostringval-- %errorexec_pop
.runexec2 --nostringval-- --nostringval-- --nostringval-- 2
%stopped_push --nostringval--
Dictionary stack:
 --dict:1171/3371(ro)(G)-- --dict:1/20(G)-- --dict:74/200(L)--
--dict:5/6(ro)(L)-- --dict:179/300(L)-- --dict:44/200(L)--
--dict:65534/65534(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 14229051
GPL Ghostscript 8.64: Unrecoverable error, exit code 1
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call
last)
/science/ATLAS3D/python/Analysis/Try.py in <module>()
----> 1
 2
 3
 4
 5
/usr/lib64/python2.6/site-packages/matplotlib/pyplot.pyc in
savefig(*args, **kwargs)
 354 def savefig(*args, **kwargs):
 355 fig = gcf()
--> 356 return fig.savefig(*args, **kwargs)
 357 if Figure.savefig.__doc__ is not None:
 358 savefig.__doc__ = dedent(Figure.savefig.__doc__)
/usr/lib64/python2.6/site-packages/matplotlib/figure.pyc in
savefig(self, *args, **kwargs)
 1030 patch.set_alpha(0.0)
 1031
-> 1032 self.canvas.print_figure(*args, **kwargs)
 1033
 1034 if transparent:
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_wxagg.pyc
in print_figure(self, filename, *args, **kwargs)
 98 def print_figure(self, filename, *args, **kwargs):
 99 # Use pure Agg renderer to draw
--> 100 FigureCanvasAgg.print_figure(self, filename, *args,
**kwargs)
 101 # Restore the current view; this is needed because the
 102 # artist contains methods rely on particular attributes
/usr/lib64/python2.6/site-packages/matplotlib/backend_bases.pyc in
print_figure(self, filename, dpi, facecolor, edgecolor, orientation,
format, **kwargs)
 1474 orientation=orientation,
 1475 bbox_inches_restore=_bbox_inches_restore,
-> 1476 **kwargs)
 1477 finally:
 1478 if bbox_inches and restore_bbox:
/usr/lib64/python2.6/site-packages/matplotlib/backend_bases.pyc in
print_eps(self, *args, **kwargs)
 1327 from backends.backend_ps import FigureCanvasPS # lazy
import
 1328 ps = self.switch_backends(FigureCanvasPS)
-> 1329 return ps.print_eps(*args, **kwargs)
 1330
 1331 def print_pdf(self, *args, **kwargs):
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_ps.pyc in
print_eps(self, outfile, *args, **kwargs)
 853
 854 def print_eps(self, outfile, *args, **kwargs):
--> 855 return self._print_ps(outfile, 'eps', *args, **kwargs)
 856
 857
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_ps.pyc in
_print_ps(self, outfile, format, *args, **kwargs)
 882 self._print_figure_tex(outfile, format, imagedpi,
facecolor, edgecolor,
 883 orientation, isLandscape,
papertype,
--> 884 **kwargs)
 885 else:
 886 self._print_figure(outfile, format, imagedpi,
facecolor, edgecolor,
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_ps.pyc in
_print_figure_tex(self, outfile, format, dpi, facecolor, edgecolor,
orientation, isLandscape, papertype, **kwargs)
 1188 gs_distill(tmpfile, isEPSF, ptype=papertype,
bbox=bbox)
 1189 elif rcParams['ps.usedistiller'] == 'xpdf':
-> 1190 xpdf_distill(tmpfile, isEPSF, ptype=papertype,
bbox=bbox)
 1191 elif rcParams['text.usetex']:
 1192 if False: pass # for debugging
/usr/lib64/python2.6/site-packages/matplotlib/backends/backend_ps.pyc in
xpdf_distill(tmpfile, eps, ptype, bbox)
 1345 fh = file(outfile)
 1346 if exit_status: raise RuntimeError('ps2pdf was not able to
process your \
-> 1347 image.\n\Here is the report generated by ghostscript:\n\n' +
fh.read())
 1348 else: verbose.report(fh.read(), 'debug')
 1349 fh.close()
RuntimeError: ps2pdf was not able to process your image.
\Here is the report generated by ghostscript:
From: Manuel W. <man...@gm...> - 2010年01月07日 14:19:25
Hi,
I'm plotting two y-axis with the twinx() command. But when I'm
creating my legend there is only one entry in the legend-box instead
of two.
Here is my code:
grafik1 = plt.figure()
ax1 = grafik1.add_subplot(111)
ax1.plot(TIME, BTM, color='red', label='Biomass')
ax1.set_ylabel('Biomass')
ax2 = ax1.twinx()
ax2.plot(TIME, FLUOR, label='Productivity')
ax2.set_ylabel('Produktivity')
ax2.set_xlabel('Time')
grafik1_legend = legend(loc=10)
From: Burly C. <bu...@mt...> - 2010年01月07日 10:40:44
Attachments: doubleaxis.png
Hi,
I've been playing around with the parasite_axes toolkit. It's very nice 
but I discovered from the example that I always get an extra set of x 
and y axis labels. See attached png. I've got around this by simply 
turning the first axis off. Is this a bug in the code or the example? 
Also there appears to be an additional set of axis label commands in the 
example.
 From demo_parasite_axes2.py
----------------------------------------------------------------------
from mpl_toolkits.axes_grid.parasite_axes import SubplotHost
import matplotlib.pyplot as plt
if 1:
 fig = plt.figure(1)
 plt.axis('off') # Extra line to remove unwanted axis labels
 host = SubplotHost(fig, 111)
 host.set_ylabel("Density")
 host.set_xlabel("Distance")
 par1 = host.twinx()
 par2 = host.twinx()
 par1.set_ylabel("Temperature")
 par2.axis["right"].set_visible(False)
 offset = 60, 0
 new_axisline = par2.get_grid_helper().new_fixed_axis
 par2.axis["right2"] = new_axisline(loc="right",
 axes=par2,
 offset=offset)
 par2.axis["right2"].label.set_visible(True)
 par2.axis["right2"].set_label("Velocity")
 fig.add_axes(host)
 plt.subplots_adjust(right=0.75)
 host.set_xlim(0, 2)
 host.set_ylim(0, 2)
 host.set_xlabel("Distance") # Why reset these three labels..
 host.set_ylabel("Density")
 par1.set_ylabel("Temperature")
 p1, = host.plot([0, 1, 2], [0, 1, 2], label="Density")
 p2, = par1.plot([0, 1, 2], [0, 3, 2], label="Temperature")
 p3, = par2.plot([0, 1, 2], [50, 30, 15], label="Velocity")
 par1.set_ylim(0, 4)
 par2.set_ylim(1, 65)
 host.legend()
 host.axis["left"].label.set_color(p1.get_color())
 par1.axis["right"].label.set_color(p2.get_color())
 par2.axis["right2"].label.set_color(p3.get_color())
 plt.draw()
 plt.show()
From: Laurent D. <lau...@gm...> - 2010年01月07日 09:58:48
Hi alexander,
 
I tryed yesterday to play a little with your script.
I suspect that in fact each time you draw a figure, it is added to a pool of
figure to be rendered.
Thus it goes slower and slower.
 
What I do in my scritpt is either update the datas or if the drawing is a
completely new one (like a polar ionstaed of log previously) I delete the
figure.
 
To update data use:
 
1/self._plot, = axe.plot(x, y, 'b', animated=self._animated)
 
Later:
Loop:
2/self._plot.set_ydata(self._value)
 
 
If you need to delete your figure (that is not your case, but who knows for
the future):
axe = fig.add_axes(self.getPosition())
… 
self._fig.delaxes(self._axe)
 
To go even faster(x10) you have the blitting method, but set_ydata should be
sufficent.
 
Laurent
 
De : Alexander Hupfer [mailto:so...@gm...] 
Envoyé : jeudi 7 janvier 2010 03:36
Cc : mat...@li...
Objet : Re: [Matplotlib-users] Colorbar embedding in qt4
 
I isolated the problem a bit more. For some reason drawing gets slower and
slower with each plot drawn.
from os import sys
from time import time
from PyQt4 import QtGui, QtCore
import matplotlib
matplotlib.use('QT4Agg')
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as
FigureCanvas
from matplotlib.figure import Figure
class MyMplCanvas(FigureCanvas):
 """Ultimately, this is a QWidget (as well as a FigureCanvasAgg,
etc.)."""
 def __init__(self, parent=None, width=5, height=4, dpi=100):
 fig = Figure(figsize=(width, height), dpi=dpi)
 self.axes = fig.add_subplot(111)
 # We want the axes cleared every time plot() is called
 self.axes.hold(False)
 self.compute_initial_figure()
 #
 FigureCanvas.__init__(self, fig)
 self.setParent(parent)
 FigureCanvas.setSizePolicy(self,
 QtGui.QSizePolicy.Expanding,
 QtGui.QSizePolicy.Expanding)
 FigureCanvas.updateGeometry(self)
 def compute_initial_figure(self):
 pass
class MyDynamicMplCanvas(MyMplCanvas):
 """A canvas that updates itself every second with a new plot."""
 def __init__(self, *args, **kwargs):
 MyMplCanvas.__init__(self, *args, **kwargs)
 timer = QtCore.QTimer(self)
 QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"),
self.update_figure)
 timer.start(0)
 self.firstrun = True
 self.colorbar = None
 self.time = time()
 self.p = None
 def compute_initial_figure(self):
 pass
 def update_figure(self):
 self.p = self.axes.scatter([1,2,3],[4,5,6], c = range(3),
animated=True)
 self.axes.set_xlabel('psi')
 self.axes.set_ylabel('delta')
 if self.firstrun == True:
 self.colorbar = self.axes.figure.colorbar(self.p)
 self.firstrun = False
 self.colorbar.set_clim(vmin=0,vmax=2) 
 self.colorbar.draw_all()
 self.colorbar.set_label('time [abtr. ]')
 self.draw()
 newtime = time()
 print newtime - self.time
 self.time = newtime
class ApplicationWindow(QtGui.QMainWindow):
 def __init__(self):
 QtGui.QMainWindow.__init__(self)
 self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
 self.main_widget = QtGui.QWidget(self)
 l = QtGui.QVBoxLayout(self.main_widget)
 dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4,
dpi=100)
 l.addWidget(dc)
 self.main_widget.setFocus()
 self.setCentralWidget(self.main_widget)
qApp = QtGui.QApplication(sys.argv)
aw = ApplicationWindow()
aw.setWindowTitle("%s" % "Slow!")
aw.setGeometry(100,100,800,600)
aw.show()
sys.exit(qApp.exec_())
On Mon, Jan 4, 2010 at 3:36 PM, Alexander Hupfer <so...@gm...> wrote:
Ok, here is the code as a whole. I think it's still short enough to
ilustrate the problem. Just start it with the datafile "elips" as an
argument
http://dl.dropbox.com/u/226980/elipsometry.tar.gz
The timer shows how long each render cycle takes. The time seems to grow
with number of cycles rendered even when no more points are added (the
points are calculated with a continous rate in a background thread and are
about 300 total).
 
On Sun, Jan 3, 2010 at 8:16 PM, John Hunter <jd...@gm...> wrote:
On Sun, Jan 3, 2010 at 7:02 PM, Alexander Hupfer <so...@gm...> wrote:
> Thanks I got it fixed.
> This leads to the follow up question:
> What is the right way to keep an application responsive while the graph is
> drawn?
> Drawing a scatter plot with 300 points seems to take a while. I guess I
need
> to launch the drawing in another thread but don't know exactly how to do
> this and only find examples of doing calculations in the background and
not
> actual widget interaction.
You posted some real code and a traceback, which helped move the ball
forward. What we really need to see to help you though is a complete,
free-standing example, that we can run on our machines, which exposes
the problem.
JDH
 
 
From: Alexander H. <so...@gm...> - 2010年01月07日 02:35:50
I isolated the problem a bit more. For some reason drawing gets slower and
slower with each plot drawn.
from os import sys
from time import time
from PyQt4 import QtGui, QtCore
import matplotlib
matplotlib.use('QT4Agg')
from matplotlib.backends.backend_qt4agg import FigureCanvasQTAgg as
FigureCanvas
from matplotlib.figure import Figure
class MyMplCanvas(FigureCanvas):
 """Ultimately, this is a QWidget (as well as a FigureCanvasAgg,
etc.)."""
 def __init__(self, parent=None, width=5, height=4, dpi=100):
 fig = Figure(figsize=(width, height), dpi=dpi)
 self.axes = fig.add_subplot(111)
 # We want the axes cleared every time plot() is called
 self.axes.hold(False)
 self.compute_initial_figure()
 #
 FigureCanvas.__init__(self, fig)
 self.setParent(parent)
 FigureCanvas.setSizePolicy(self,
 QtGui.QSizePolicy.Expanding,
 QtGui.QSizePolicy.Expanding)
 FigureCanvas.updateGeometry(self)
 def compute_initial_figure(self):
 pass
class MyDynamicMplCanvas(MyMplCanvas):
 """A canvas that updates itself every second with a new plot."""
 def __init__(self, *args, **kwargs):
 MyMplCanvas.__init__(self, *args, **kwargs)
 timer = QtCore.QTimer(self)
 QtCore.QObject.connect(timer, QtCore.SIGNAL("timeout()"),
self.update_figure)
 timer.start(0)
 self.firstrun = True
 self.colorbar = None
 self.time = time()
 self.p = None
 def compute_initial_figure(self):
 pass
 def update_figure(self):
 self.p = self.axes.scatter([1,2,3],[4,5,6], c = range(3),
animated=True)
 self.axes.set_xlabel('psi')
 self.axes.set_ylabel('delta')
 if self.firstrun == True:
 self.colorbar = self.axes.figure.colorbar(self.p)
 self.firstrun = False
 self.colorbar.set_clim(vmin=0,vmax=2)
 self.colorbar.draw_all()
 self.colorbar.set_label('time [abtr. ]')
 self.draw()
 newtime = time()
 print newtime - self.time
 self.time = newtime
class ApplicationWindow(QtGui.QMainWindow):
 def __init__(self):
 QtGui.QMainWindow.__init__(self)
 self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
 self.main_widget = QtGui.QWidget(self)
 l = QtGui.QVBoxLayout(self.main_widget)
 dc = MyDynamicMplCanvas(self.main_widget, width=5, height=4,
dpi=100)
 l.addWidget(dc)
 self.main_widget.setFocus()
 self.setCentralWidget(self.main_widget)
qApp = QtGui.QApplication(sys.argv)
aw = ApplicationWindow()
aw.setWindowTitle("%s" % "Slow!")
aw.setGeometry(100,100,800,600)
aw.show()
sys.exit(qApp.exec_())
On Mon, Jan 4, 2010 at 3:36 PM, Alexander Hupfer <so...@gm...> wrote:
> Ok, here is the code as a whole. I think it's still short enough to
> ilustrate the problem. Just start it with the datafile "elips" as an
> argument
>
> http://dl.dropbox.com/u/226980/elipsometry.tar.gz
>
> The timer shows how long each render cycle takes. The time seems to grow
> with number of cycles rendered even when no more points are added (the
> points are calculated with a continous rate in a background thread and are
> about 300 total).
>
>
> On Sun, Jan 3, 2010 at 8:16 PM, John Hunter <jd...@gm...> wrote:
>
>> On Sun, Jan 3, 2010 at 7:02 PM, Alexander Hupfer <so...@gm...>
>> wrote:
>> > Thanks I got it fixed.
>> > This leads to the follow up question:
>> > What is the right way to keep an application responsive while the graph
>> is
>> > drawn?
>> > Drawing a scatter plot with 300 points seems to take a while. I guess I
>> need
>> > to launch the drawing in another thread but don't know exactly how to do
>> > this and only find examples of doing calculations in the background and
>> not
>> > actual widget interaction.
>>
>> You posted some real code and a traceback, which helped move the ball
>> forward. What we really need to see to help you though is a complete,
>> free-standing example, that we can run on our machines, which exposes
>> the problem.
>>
>> JDH
>>
>
>

Showing 8 results of 8

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /