There are a couple of alternative formatters for log scaling that don't require mathtext.

You can do:

from matplotlib.tickers import LogFormatter, LogFormatterExponent
...
ax.xaxis.set_major_formatter(LogFormatter())
# or LogFormatterExponent(), which is just the exponent

To clarify the font issue. The PDF backend has no support for outputting Type 1 fonts. There is an rcParam "pdf.fonttype" that allows you to choose between Type 3 and Type 42 fonts, however. Type 3 stores each character as a path and then uses those to put strings together. It supports font subsetting, so an entire large font is not embedded in the file. Type 42 (essentially) just embeds a TrueType font in the file, and we don't support subsetting there.

There is also the "pdf.use14corefonts" that will use the 14 built-in PDF fonts whenever possible (and therefore not embed any fonts). However, mathtext requires a special font for the math symbols, and thus it starts to embed fonts.

You may try setting "mathtext.default" to "regular", which will use the font used as the default for the rest of the text first. This should have the effect of not embedding any extra fonts in the file as long as you don't use any special symbols in the math.

Mike

On 10/30/2012 05:23 AM, Phil Elson wrote:
Hi Brandon,

I notice that this is cross-posted on StackOverflow (http://stackoverflow.com/questions/13132194/type-1-fonts-with-log-graphs). Personally, I have no problem with cross posting, but to save two people having to answer the same question, I would make sure it was explicit that this had also been posted elsewhere.

Thanks,

Phil


On 30 October 2012 03:13, Brandon Heller <brand...@stanford.edu <mailto:brand...@stanford.edu>> wrote:

    Hi,

    I'm trying to use Matplotlib graphs as part of a camera-ready
    submission, and the publishing house requires the use of Type 1 fonts
    only.

    I'm finding that the PDF backend happily outputs Type-1 fonts for
    simple graphs with linear Y axes, but outputs Type-3 fonts for
    logarithmic Y axes.

    Using a logarithmic yscale incurs the use of mathtext, which seems to
    use Type 3 fonts, presumably because of the default use of exponential
    notation.  I can use an ugly hack to get around this - using
    pyplot.yticks() to force the axis ticks to not use exponents - but
    this would require moving the plot region to accommodate large labels
    (like 10 ^ 6) or writing the axes as 10, 100, 1K, etc. so they fit.

    There's a minimum working example below, which I've tested with the
    matplotlib master branch as of today, as well as 1.1.1, which produces
    the same behavior, so I don't know that this is a bug, probably just
    unexpected behavior.


    #!/usr/bin/env python
    # Simple program to test for type 1 fonts.
    # Generate a line graph w/linear and log Y axes.

    from matplotlib import rc, rcParams

    #rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})

    # These lines are needed to get type-1 results:
    #
    
http://nerdjusttyped.blogspot.com/2010/07/type-1-fonts-and-matplotlib-figures.html
    rcParams['ps.useafm'] = True
    rcParams['pdf.use14corefonts'] = True
    rcParams['text.usetex'] = False

    import matplotlib.pyplot as plt

    YSCALES = ['linear', 'log']

    def plot(filename, yscale):
        plt.figure(1)
        xvals = range(1, 2)
        yvals = xvals
        plt.plot(xvals, yvals)
        plt.yscale(yscale)
        #YTICKS = [1, 10]
        #plt.yticks(YTICKS, YTICKS)  # locs, labels
        ax = plt.gca()
        #print ax.get_xticklabels()[0].get_text()
        print ",".join([a.get_label() for a in ax.get_yticklabels()])
        plt.savefig(filename + '.pdf')


    if __name__ == '__main__':
        for yscale in YSCALES:
            plot('linegraph-' + yscale, yscale)



    Does anyone know a clean way to get Type 1 fonts with log axes?

    Thanks,
    Brandon

    
------------------------------------------------------------------------------
    Everyone hates slow websites. So do we.
    Make your web apps faster with AppDynamics
    Download AppDynamics Lite for free today:
    http://p.sf.net/sfu/appdyn_sfd2d_oct
    _______________________________________________
    Matplotlib-users mailing list
    Matplotlib-users@lists.sourceforge.net
    <mailto:Matplotlib-users@lists.sourceforge.net>
    https://lists.sourceforge.net/lists/listinfo/matplotlib-users




------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct


_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to