Index: lib/matplotlib/backend_bases.py
===================================================================
--- lib/matplotlib/backend_bases.py	(revision 6361)
+++ lib/matplotlib/backend_bases.py	(working copy)
@@ -433,6 +433,7 @@
         self._linewidth = 1
         self._rgb = (0.0, 0.0, 0.0)
         self._hatch = None
+        self._url = None
 
     def copy_properties(self, gc):
         'Copy properties from gc to self'
@@ -447,6 +448,7 @@
         self._linewidth = gc._linewidth
         self._rgb = gc._rgb
         self._hatch = gc._hatch
+        self._url = gc._url
 
     def get_alpha(self):
         """
@@ -521,6 +523,12 @@
         matlab format string, a html hex color string, or a rgb tuple
         """
         return self._rgb
+    
+    def get_url(self):
+        """
+        returns a url if one is set, None otherwise
+        """
+        return self._url
 
     def set_alpha(self, alpha):
         """
@@ -621,6 +629,12 @@
             raise ValueError('Unrecognized linestyle: %s' % style)
         self._linestyle = style
         self.set_dashes(offset, dashes)
+        
+    def set_url(self, url):
+        """
+        Sets the url for links in compatible backends
+        """
+        self._url = url
 
     def set_hatch(self, hatch):
         """
Index: lib/matplotlib/artist.py
===================================================================
--- lib/matplotlib/artist.py	(revision 6361)
+++ lib/matplotlib/artist.py	(working copy)
@@ -50,6 +50,7 @@
         self._propobservers = {} # a dict from oids to funcs
         self.axes = None
         self._remove_method = None
+        self._url = None
 
     def remove(self):
         """
@@ -313,6 +314,18 @@
         """
         return self.figure is not None
 
+    def get_url(self):
+        """
+        Returns the url
+        """
+        return self._url
+    
+    def set_url(self, url):
+        """
+        Sets the url for the artist
+        """
+        self._url = url
+
     def get_figure(self):
         """
         Return the :class:`~matplotlib.figure.Figure` instance the
Index: lib/matplotlib/patches.py
===================================================================
--- lib/matplotlib/patches.py	(revision 6361)
+++ lib/matplotlib/patches.py	(working copy)
@@ -278,6 +278,7 @@
         gc.set_antialiased(self._antialiased)
         self._set_gc_clip(gc)
         gc.set_capstyle('projecting')
+        gc.set_url(self._url)
 
         if (not self.fill or self._facecolor is None or
             (cbook.is_string_like(self._facecolor) and self._facecolor.lower()=='none')):
@@ -325,6 +326,7 @@
                     antialiased = None,
                     hatch = None,
                     fill=True,
+                    url=None,
                     **kwargs
                     ):
     """
@@ -344,6 +346,7 @@
     self.set_linestyle(linestyle)
     self.set_antialiased(antialiased)
     self.set_hatch(hatch)
+    self.set_url(url)
     self.fill = fill
     self._combined_transform = transforms.IdentityTransform()
 
Index: lib/matplotlib/backends/backend_svg.py
===================================================================
--- lib/matplotlib/backends/backend_svg.py	(revision 6361)
+++ lib/matplotlib/backends/backend_svg.py	(working copy)
@@ -67,9 +67,13 @@
         else:
             clippath = 'clip-path="url(#%s)"' % clipid
 
+        if gc.get_url() is not None:
+            self._svgwriter.write('<a xlink:href="%s">' % gc.get_url())
         style = self._get_style(gc, rgbFace)
         self._svgwriter.write ('<%s style="%s" %s %s/>\n' % (
                 element, style, clippath, details))
+        if gc.get_url() is not None:
+            self._svgwriter.write('</a>')
 
     def _get_font(self, prop):
         key = hash(prop)
Index: lib/matplotlib/text.py
===================================================================
--- lib/matplotlib/text.py	(revision 6361)
+++ lib/matplotlib/text.py	(working copy)
@@ -464,6 +464,7 @@
         gc = renderer.new_gc()
         gc.set_foreground(self._color)
         gc.set_alpha(self._alpha)
+        gc.set_url(self._url)
         if self.get_clip_on():
             gc.set_clip_rectangle(self.clipbox)
 
