Forgot to attach example. Sorry.
Michael Droettboom wrote:
Presently, there's no direct way to do this. matplotlib uses the
standard Python (derived from C) number formatting which uses a
hyphen. There are a couple of workarounds, however.
You can set a custom tick formatter by providing a function and
wrapping it in a FuncFormatter object. (See attached). You can have
your function replace all of the hyphens with minus signs, or force it
to use the mathtext formatting (which uses minus signs by default) by
wrapping the text in '$'. Alternatively, if your plot is designed for
inclusion in t a (La)TeX document, you can turn usetex on in your
matplotlibrc.
All that said, it might be nice to make this the default behavior in
future versions of matplotlib. We're about to make a release, so I
don't want to put this in right now. Could you possibly file a
"Feature Request" in the tracker so we don't lose track of this?
Cheers,
Mike
Markus Kuhn wrote:
Matplotlib currently uses the "hyphen" character instead of a "minus
sign" when printing negative numbers in plots.
While these two characters are traditionally not distinguished in
monospaced fonts, there is a big difference in proportional fonts. A
hyphen (Unicode character 0x002d) is very short and used between words,
whereas a minus sign (Unicode: 0x2212) is much longer and looks exactly
like the horizontal part of a plus sign.
Practically all modern fonts do contain a minus sign. In those fonts
that still lack a minus sign, the (often slightly lower/thinner/longer)
"en dash" is usually a much less painful substitute than the hyphen.
[The PostScript standard encoding lacks a minus sign, but the PostScript
symbol font has one at 0x2d, as documented in
http://www.unicode.org/Public/MAPPINGS/VENDORS/ADOBE/symbol.txt ]
Example:
from pylab import *
plot([-3, -2, -1], [1,-3,-2])
title(u"wrong: -2..+2 correct: \u22122..+2")
show()
Is there a way to cause matplotlib to use the correct minus-sign glyph?
That would help to keep typographically very picky editors of scientific
journals happy ...
Markus
--
Michael Droettboom
Science Software Branch
Operations and Engineering Division
Space Telescope Science Institute
Operated by AURA for NASA
from pylab import *
from matplotlib.ticker import FuncFormatter
plot([-10, 10])
def minus_formatter(x, pos):
return unicode(x).replace('-', u'\u22122')
def math_formatter(x, pos):
return "$%s$" % x
axes().xaxis.set_major_formatter(FuncFormatter(math_formatter))
axes().yaxis.set_major_formatter(FuncFormatter(math_formatter))
show()
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users