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

Showing 1 results of 1

From: Srinath A. <sr...@fa...> - 2004年04月17日 08:22:22
On 2004年4月16日, John Hunter wrote:
> Yes, this would be a very nive feature. When you implement it, please
> send it back to the list. Here is an example that shows you how to
> connect to the events and more importantly for you, convert to user
> coords
>
Here's a very preliminary implementation. Its not really very elegant,
but it seems to work. A couple of questions. Is there a remove_line or
equivalent for axes? As of now, I make the rectangle which shows the
zoom window dissapear by setting its xdata and ydata to [], but it might
be elegant to just remove the line from the axis completely. Also I seem
to trigger a matplotlib bug if I toggle the zoom button and then start
the button press event outside the axes.
I have yet to delve into the matplotlib source itself and maybe I am not
the best person to do it. The best place to add this would be to extend
the axes class with a .zoom() method which would work like the
ZoomButtonPressed() function below (It basically makes the next button
press trigger the ZoomStart() function which in turn calls
ZoomContinue() on the "motion_notify_event"). ZoomStart() will have to
be modified to account for more than one axes belonging to a figure.
We'll have to check whether the user presses the mouse in the axes whos
.zoom() function has been called.
Thanks again for all the help :) I think I am almost ready to get things
working with matplotlib.
-- 
Srinath
from matplotlib.numerix import arange, sin, cos, pi
import matplotlib
matplotlib.use('GTK')
from matplotlib.backends.backend_gtk import FigureCanvasGTK
from matplotlib.axes import Subplot
from matplotlib.figure import Figure
import gtk
class MyApp:
 def __init__(self):
 self.win = gtk.Window()
 self.win.set_name("Embedding in GTK")
 self.win.connect("destroy", gtk.mainquit)
 self.win.set_border_width(5)
 self.vbox = gtk.VBox(spacing=3)
 self.win.add(self.vbox)
 self.vbox.show()
 self.fig = Figure(figsize=(5,4), dpi=100)
 self.ax = Subplot(self.fig, 111)
 self.ax.plot([0,1], [0,1])
 self.fig.add_axis(self.ax)
 self.canvas = FigureCanvasGTK(self.fig) # a gtk.DrawingArea
 self.canvas.show()
 self.canvas.connect('motion_notify_event', self.setAxisCursorLocation)
 self.vbox.pack_start(self.canvas)
 buttonZoom = gtk.ToggleButton('Toggle Zoom')
 buttonZoom.connect('button_press_event', self.ZoomButtonPressed)
 buttonZoom.show()
 self.vbox.pack_start(buttonZoom)
 self.win.show()
 def setAxisCursorLocation(self, widget, event):
 height = self.canvas.figure.bbox.y.interval()
 x, y = event.x, height-event.y
 t = self.ax.xaxis.transData.inverse_positions(x)
 val = self.ax.yaxis.transData.inverse_positions(y)
 self.cursorLocation = (t, val)
 def getAxisCursorLocation(self):
 if not hasattr(self, 'cursorLocation'):
 return None
 return self.cursorLocation
 def ZoomButtonPressed(self, widget, event):
 if not widget.get_active():
 self.zoomStartEventHandle = self.canvas.connect('button_press_event', self.ZoomStart)
 else:
 if hasattr(self, 'zoomStartEventHandle'):
 self.canvas.disconnect(self.zoomStartEventHandle)
 def ZoomStart(self, widget, event):
 self.zoomStartPosition = self.getAxisCursorLocation()
 x, y = self.zoomStartPosition
 if hasattr(self, 'zoomRectangle'):
 self.zoomRectangle.set_xdata([x,x,x,x,x])
 self.zoomRectangle.set_ydata([y,y,y,y,y])
 else:
 self.zoomRectangle = self.ax.plot([x,x,x,x,x], [y,y,y,y,y], 'k:')[0]
 self.zoomContinueEventHandle = self.canvas.connect_after('motion_notify_event', self.ZoomContinue)
 self.zoomStopEventHandle = self.canvas.connect('button_release_event', self.ZoomStop)
 def ZoomContinue(self, widget, event):
 xs, ys = self.zoomStartPosition
 x, y = self.getAxisCursorLocation()
 self.zoomRectangle.set_xdata([xs, x, x, xs, xs])
 self.zoomRectangle.set_ydata([ys, ys, y, y, ys])
 self.canvas.draw()
 def ZoomStop(self, widget, event):
 self.canvas.disconnect(self.zoomContinueEventHandle)
 self.canvas.disconnect(self.zoomStopEventHandle)
 self.zoomRectangle.set_xdata([])
 self.zoomRectangle.set_ydata([])
 xs, ys = self.zoomStartPosition
 x, y = self.getAxisCursorLocation()
 self.ax.set_xlim([min([xs,x]), max([xs,x])])
 self.ax.set_ylim([min([ys,y]), max([ys,y])])
 self.canvas.draw()
if __name__=='__main__':
 app = MyApp()
 gtk.mainloop()

Showing 1 results of 1

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 によって変換されたページ (->オリジナル) /