.. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_gallery_misc_svg_filter_line.py: =============== SVG Filter Line =============== Demonstrate SVG filtering effects which might be used with mpl. Note that the filtering effects are only effective if your svg renderer support it. .. image:: /gallery/misc/images/sphx_glr_svg_filter_line_001.png :alt: svg filter line :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out Out: .. code-block:: none Saving 'svg_filter_line.svg' | .. code-block:: default import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms fig1 = plt.figure() ax = fig1.add_axes([0.1, 0.1, 0.8, 0.8]) # draw lines l1, = ax.plot([0.1, 0.5, 0.9], [0.1, 0.9, 0.5], "bo-", mec="b", lw=5, ms=10, label="Line 1") l2, = ax.plot([0.1, 0.5, 0.9], [0.5, 0.2, 0.7], "rs-", mec="r", lw=5, ms=10, color="r", label="Line 2") for l in [l1, l2]: # draw shadows with same lines with slight offset and gray colors. xx = l.get_xdata() yy = l.get_ydata() shadow, = ax.plot(xx, yy) shadow.update_from(l) # adjust color shadow.set_color("0.2") # adjust zorder of the shadow lines so that it is drawn below the # original lines shadow.set_zorder(l.get_zorder() - 0.5) # offset transform ot = mtransforms.offset_copy(l.get_transform(), fig1, x=4.0, y=-6.0, units='points') shadow.set_transform(ot) # set the id for a later use shadow.set_gid(l.get_label() + "_shadow") ax.set_xlim(0., 1.) ax.set_ylim(0., 1.) # save the figure as a bytes string in the svg format. from io import BytesIO f = BytesIO() plt.savefig(f, format="svg") import xml.etree.ElementTree as ET # filter definition for a gaussian blur filter_def = """ """ # read in the saved svg tree, xmlid = ET.XMLID(f.getvalue()) # insert the filter definition in the svg dom tree. tree.insert(0, ET.XML(filter_def)) for l in [l1, l2]: # pick up the svg element with given id shadow = xmlid[l.get_label() + "_shadow"] # apply shadow filter shadow.set("filter", 'url(#dropshadow)') fn = "svg_filter_line.svg" print("Saving '%s'" % fn) ET.ElementTree(tree).write(fn) .. _sphx_glr_download_gallery_misc_svg_filter_line.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: svg_filter_line.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: svg_filter_line.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature Keywords: matplotlib code example, codex, python plot, pyplot `Gallery generated by Sphinx-Gallery `_