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