SourceForge logo
SourceForge logo
Menu

matplotlib-checkins

From: <md...@us...> - 2007年08月31日 19:25:36
Revision: 3765
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3765&view=rev
Author: mdboom
Date: 2007年08月31日 12:25:34 -0700 (2007年8月31日)
Log Message:
-----------
Render all the fonts in each mathtext expression to a single image buffer
(memory and time savings).
Add support for getting raw image data for mathtext expressions.
Add mathtext_wx.py example showing how to put mathtext expressions
into controls.
Added Paths:
-----------
 trunk/matplotlib/examples/mathtext_wx.py
Added: trunk/matplotlib/examples/mathtext_wx.py
===================================================================
--- trunk/matplotlib/examples/mathtext_wx.py	 (rev 0)
+++ trunk/matplotlib/examples/mathtext_wx.py	2007年08月31日 19:25:34 UTC (rev 3765)
@@ -0,0 +1,124 @@
+"""
+Demonstrates how to convert mathtext to a wx.Bitmap for display in various
+controls on wxPython.
+"""
+
+import matplotlib
+matplotlib.use("WxAgg")
+from matplotlib.numerix import arange, sin, pi, cos, log
+from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
+from matplotlib.backends.backend_wx import NavigationToolbar2Wx
+from matplotlib.figure import Figure
+
+import wx
+
+IS_GTK = 'wxGTK' in wx.PlatformInfo
+IS_WIN = 'wxMSW' in wx.PlatformInfo
+IS_MAC = 'wxMac' in wx.PlatformInfo
+
+############################################################
+# This is where the "magic" happens.
+from matplotlib.mathtext import MathTextParser
+mathtext_parser = MathTextParser("Bitmap")
+def mathtext_to_wxbitmap(s):
+ ftimage = mathtext_parser.parse(s, 150)
+ return wx.BitmapFromBufferRGBA(
+ ftimage.get_width(), ftimage.get_height(),
+ ftimage.as_rgba_str())
+############################################################
+
+functions = [
+ (r'$\sin(2 \pi x)$' , lambda x: sin(2*pi*x)),
+ (r'$\frac{4}{3}\pi x^3$' , lambda x: (4.0 / 3.0) * pi * x**3),
+ (r'$\cos(2 \pi x)$' , lambda x: cos(2*pi*x)),
+ (r'$\log x$' , lambda x: log(x))
+]
+
+class CanvasFrame(wx.Frame):
+ def __init__(self, parent, title):
+ wx.Frame.__init__(self, parent, -1, title, size=(550, 350))
+ self.SetBackgroundColour(wx.NamedColor("WHITE"))
+
+ self.figure = Figure()
+ self.axes = self.figure.add_subplot(111)
+ self.change_plot(0)
+ 
+ self.canvas = FigureCanvas(self, -1, self.figure)
+
+ self.sizer = wx.BoxSizer(wx.VERTICAL)
+ self.add_buttonbar()
+ self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
+ self.add_toolbar() # comment this out for no toolbar
+ 
+ menuBar = wx.MenuBar()
+
+ # File Menu
+ menu = wx.Menu()
+ menu.Append(wx.ID_EXIT, "E&xit\tAlt-X", "Exit this simple sample")
+ menuBar.Append(menu, "&File")
+
+ if IS_GTK or IS_WIN:
+ # Equation Menu
+ menu = wx.Menu()
+ for i, (mt, func) in enumerate(functions):
+ bm = mathtext_to_wxbitmap(mt)
+ item = wx.MenuItem(menu, 1000 + i, "")
+ item.SetBitmap(bm)
+ menu.AppendItem(item)
+ self.Bind(wx.EVT_MENU, self.OnChangePlot, item)
+ menuBar.Append(menu, "&Functions")
+
+ self.SetMenuBar(menuBar)
+
+ self.SetSizer(self.sizer)
+ self.Fit()
+
+ def add_buttonbar(self):
+ self.button_bar = wx.Panel(self)
+ self.button_bar_sizer = wx.BoxSizer(wx.HORIZONTAL)
+ self.sizer.Add(self.button_bar, 0, wx.LEFT | wx.TOP | wx.GROW)
+
+ for i, (mt, func) in enumerate(functions):
+ bm = mathtext_to_wxbitmap(mt)
+ button = wx.BitmapButton(self.button_bar, 1000 + i, bm)
+ self.button_bar_sizer.Add(button, 1, wx.GROW)
+ self.Bind(wx.EVT_BUTTON, self.OnChangePlot, button)
+
+ self.button_bar.SetSizer(self.button_bar_sizer)
+
+ def add_toolbar(self):
+ """Copied verbatim from embedding_wx2.py"""
+ self.toolbar = NavigationToolbar2Wx(self.canvas)
+ self.toolbar.Realize()
+ if IS_MAC:
+ self.SetToolBar(self.toolbar)
+ else:
+ tw, th = self.toolbar.GetSizeTuple()
+ fw, fh = self.canvas.GetSizeTuple()
+ self.toolbar.SetSize(wx.Size(fw, th))
+ self.sizer.Add(self.toolbar, 0, wx.LEFT | wx.EXPAND)
+ self.toolbar.update()
+
+ def OnPaint(self, event):
+ self.canvas.draw()
+
+ def OnChangePlot(self, event):
+ self.change_plot(event.GetId() - 1000)
+ 
+ def change_plot(self, plot_number):
+ t = arange(1.0,3.0,0.01)
+ s = functions[plot_number][1](t)
+ self.axes.clear()
+ self.axes.plot(t, s)
+ self.Refresh()
+ 
+class MyApp(wx.App):
+ def OnInit(self):
+ frame = CanvasFrame(None, "wxPython mathtext demo app")
+ self.SetTopWindow(frame)
+ frame.Show(True)
+ return True
+ 
+app = MyApp()
+app.MainLoop()
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
From: <md...@us...> - 2007年08月31日 19:35:12
Revision: 3766
 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3766&view=rev
Author: mdboom
Date: 2007年08月31日 12:35:09 -0700 (2007年8月31日)
Log Message:
-----------
Fix log expression.
Modified Paths:
--------------
 trunk/matplotlib/examples/mathtext_wx.py
Modified: trunk/matplotlib/examples/mathtext_wx.py
===================================================================
--- trunk/matplotlib/examples/mathtext_wx.py	2007年08月31日 19:25:34 UTC (rev 3765)
+++ trunk/matplotlib/examples/mathtext_wx.py	2007年08月31日 19:35:09 UTC (rev 3766)
@@ -31,7 +31,7 @@
 (r'$\sin(2 \pi x)$' , lambda x: sin(2*pi*x)),
 (r'$\frac{4}{3}\pi x^3$' , lambda x: (4.0 / 3.0) * pi * x**3),
 (r'$\cos(2 \pi x)$' , lambda x: cos(2*pi*x)),
- (r'$\log x$' , lambda x: log(x))
+ (r'$\log(x)$' , lambda x: log(x))
 ]
 
 class CanvasFrame(wx.Frame):
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
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 によって変換されたページ (->オリジナル) /