|
From: Phil E. <pel...@gm...> - 2012-10-30 09:23:12
|
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 <bra...@st...> 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 > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users > |