SourceForge logo
SourceForge logo
Menu

matplotlib-devel

From: Dieter W. <di...@ue...> - 2010年12月16日 13:15:11
Hi,
I tried to use matplotlib.rcParams['svg.embed_char_paths'] = False in
order to have editable text in exported SVG, but there was an encoding
issue and the file data could not be written (traceback appended).
Therefore I exchanged the XML character escaping from sax in
backend_svg.py with python's native XML escape capability (see appended
diff), and voilà it works!
The conversion of mathtext to SVG is still not so nice because specific
fonts (cmmi10, cmr10, cmsy10) are used that encode mathematic symbols
with other unrelated characters. The formula display will totally break
if these fonts aren't installed, and editing is a pain. It would
therefore be great if unicode characters were used so that the correct
display is not so much dependent on those specific fonts. Would this
introduce other problems and where would be the best point to make that
change?
Greetings,
Dieter
From: Michael D. <md...@st...> - 2010年12月16日 14:58:39
Unfortunately, this isn't a complete solution. The purpose of the "escape_xml_chars" function is to escape characters that have special meaning in XML, e.g. "&" -> "&amp;", "<" -> "&lt;" etc. The "xmlcharrefreplace" option on encode() does not do that.
I am surprised that you got this traceback, as the SVG is output using a UTF-8 EncodedFile object, which should be able to handle any unicode characters you throw at it. Can you provide a short, standalone example that reproduces the error, and some information about your platform, so I can examine further?
As for your suggestion to encode mathematical characters as unicode, unfortunately that would only partially. In order to layout the mathematical expressions, we must have the same font available at generation and rendering time to know the size of the characters and therefore how to place them next to each other correctly. That said, if you use the STIX fonts (set "mathtext.fontset" to "STIX"), those do use a Unicode-based encoding rather than the arbitrary one used by the Bakoma Computer Modern fonts. Of course, generating a math expression using the STIX fonts and rendering it using a different Unicode math font is not guaranteed to work well -- you are almost certain to get overlapping or misplaced glyphs.
Mike
From: Dieter W. <di...@ue...> - 2010年12月16日 16:00:04
Attachments: svg-export
Hi Mike,
the error only occurs if the output file is specified as a file(-like)
object instead of a file name. This is necessary for me in order to add
a matplotlib-generated file to a tar archive via a safe temporary file.
Greetings,
Dieter
From: Michael D. <md...@st...> - 2010年12月16日 20:40:50
What platform are you on? It "works for me" on Fedora 14, RHEL 5 and 
Cygwin.
Mike
On 12/16/2010 10:59 AM, Dieter Weber wrote:
> #!/usr/bin/env python
> # -*- coding: utf-8 -*-
> import matplotlib
> import matplotlib.pyplot as pp
> import tempfile
> import cStringIO as StringIO
>
> matplotlib.rcParams['svg.embed_char_paths'] = False
>
> pp.plot([1, 2], [1, 2], label=u"äöü")
> pp.legend()
>
> # works
> pp.savefig('test.svg')
>
> # breaks
> with open('test2.svg', 'wb') as ofile:
> pp.savefig(ofile, format='svg')
>
> # breaks
> ostr = StringIO.StringIO()
> pp.savefig(ostr, format='svg')
From: Dieter W. <di...@ue...> - 2010年12月17日 09:22:51
Hi Mike,
sorry, I forgot my platform in my last mail!
I am running Ubuntu 10.04.1 LTS x86_64
Python: 2.6.5, Ubuntu
matplotlib: svn trunk, revision 8841
All other dependencies of matplotlib are installed as "normal" packages
of the distribution. Versions can be found here:
http://packages.ubuntu.com/lucid/python/
Would you like more information or should I run more tests?
Greetings,
Dieter
Am Donnerstag, den 16.12.2010, 15:40 -0500 schrieb Michael Droettboom:
> What platform are you on? It "works for me" on Fedora 14, RHEL 5 and 
> Cygwin.
> 
> Mike
> 
> On 12/16/2010 10:59 AM, Dieter Weber wrote:
> > #!/usr/bin/env python
> > # -*- coding: utf-8 -*-
> > import matplotlib
> > import matplotlib.pyplot as pp
> > import tempfile
> > import cStringIO as StringIO
> >
> > matplotlib.rcParams['svg.embed_char_paths'] = False
> >
> > pp.plot([1, 2], [1, 2], label=u"äöü")
> > pp.legend()
> >
> > # works
> > pp.savefig('test.svg')
> >
> > # breaks
> > with open('test2.svg', 'wb') as ofile:
> > pp.savefig(ofile, format='svg')
> >
> > # breaks
> > ostr = StringIO.StringIO()
> > pp.savefig(ostr, format='svg')
> 
From: Michael D. <md...@st...> - 2010年12月17日 14:04:41
Attachments: encoding.diff
Can you try applying the attached patch and let me know if it resolves 
the problem for you?
Mike
On 12/17/2010 04:22 AM, Dieter Weber wrote:
> Hi Mike,
> sorry, I forgot my platform in my last mail!
>
> I am running Ubuntu 10.04.1 LTS x86_64
>
> Python: 2.6.5, Ubuntu
> matplotlib: svn trunk, revision 8841
>
> All other dependencies of matplotlib are installed as "normal" packages
> of the distribution. Versions can be found here:
> http://packages.ubuntu.com/lucid/python/
>
> Would you like more information or should I run more tests?
>
> Greetings,
> Dieter
>
> Am Donnerstag, den 16.12.2010, 15:40 -0500 schrieb Michael Droettboom:
>> What platform are you on? It "works for me" on Fedora 14, RHEL 5 and
>> Cygwin.
>>
>> Mike
>>
>> On 12/16/2010 10:59 AM, Dieter Weber wrote:
>>> #!/usr/bin/env python
>>> # -*- coding: utf-8 -*-
>>> import matplotlib
>>> import matplotlib.pyplot as pp
>>> import tempfile
>>> import cStringIO as StringIO
>>>
>>> matplotlib.rcParams['svg.embed_char_paths'] = False
>>>
>>> pp.plot([1, 2], [1, 2], label=u"äöü")
>>> pp.legend()
>>>
>>> # works
>>> pp.savefig('test.svg')
>>>
>>> # breaks
>>> with open('test2.svg', 'wb') as ofile:
>>> pp.savefig(ofile, format='svg')
>>>
>>> # breaks
>>> ostr = StringIO.StringIO()
>>> pp.savefig(ostr, format='svg')
>
From: Dieter W. <di...@ue...> - 2010年12月17日 14:37:45
Hi Mike,
the patch resolved my problem. Thanks a lot!
Greetings,
Dieter
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 によって変換されたページ (->オリジナル) /