backend_payload_svg.py
39 lines
| 1.3 KiB
| text/x-python
|
PythonLexer
Fernando Perez
|
r2890 | """Produce SVG versions of active plots for display by the rich Qt frontend. | ||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
epatters
|
r2756 | # Standard library imports | ||
from cStringIO import StringIO | ||||
# System library imports. | ||||
from matplotlib.backends.backend_svg import new_figure_manager | ||||
from matplotlib._pylab_helpers import Gcf | ||||
# Local imports. | ||||
from backend_payload import add_plot_payload | ||||
Fernando Perez
|
r2890 | #----------------------------------------------------------------------------- | ||
# Functions | ||||
#----------------------------------------------------------------------------- | ||||
epatters
|
r2756 | |||
def show(): | ||||
""" Deliver a SVG payload. | ||||
""" | ||||
Fernando Perez
|
r2890 | for figure_manager in Gcf.get_all_fig_managers(): | ||
Brian Granger
|
r2819 | # Make the background transparent. | ||
# figure_manager.canvas.figure.patch.set_alpha(0.0) | ||||
# Set the background to white instead so it looks good on black. | ||||
figure_manager.canvas.figure.set_facecolor('white') | ||||
figure_manager.canvas.figure.set_edgecolor('white') | ||||
epatters
|
r2756 | data = svg_from_canvas(figure_manager.canvas) | ||
add_plot_payload('svg', data) | ||||
Fernando Perez
|
r2890 | |||
epatters
|
r2756 | def svg_from_canvas(canvas): | ||
""" Return a string containing the SVG representation of a FigureCanvasSvg. | ||||
""" | ||||
string_io = StringIO() | ||||
canvas.print_svg(string_io) | ||||
return string_io.getvalue() | ||||