Re: [Matplotlib-users] tex rendering broken?
I just downgraded to matplotlib 1.1.1 and now everything works. Looks like a regression to me. On Fri, 2014-10-31 at 15:53 +, Martin Wiebusch wrote: I am having trouble executing the example for typesetting labels with latex from http://matplotlib.org/users/usetex.html. Copying the standard example, tex_demo.py, to a file and executing it gives the following output: Traceback (most recent call last): File scratch.py, line 21, in module plt.savefig('tex_demo') File /usr/lib/pymodules/python2.7/matplotlib/pyplot.py, line 561, in savefig return fig.savefig(*args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/figure.py, line 1421, in savefig self.canvas.print_figure(*args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/backend_bases.py, line 2220, in print_figure **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 505, in print_png FigureCanvasAgg.draw(self) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 451, in draw self.figure.draw(self.renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/figure.py, line 1034, in draw func(*args) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/axes.py, line 2086, in draw a.draw(renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/axis.py, line 1105, in draw self.label.draw(renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/text.py, line 594, in draw self._fontproperties, angle, mtext=self) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 241, in draw_tex self._renderer.draw_text_image(Z, x, y, angle, gc) OverflowError: cannot convert float infinity to integer My system is Linux mwlaptop 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux My matplotlib version is 1.3.1, and I am using standard packages from my Ubuntu 14.10 distribution. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] Fwd: tex rendering broken?
Forwarding message to list that should have gone there initialy for archiving. -- Forwarded message -- From: Thomas Caswell tcasw...@gmail.com Date: Mon, Nov 3, 2014 at 7:50 AM Subject: Re: [Matplotlib-users] tex rendering broken? To: Martin Wiebusch mwiebusc...@gmail.com My first guess is that there is that some thing wrong with your latex installation as the images on the website are regenerated as part of building the documentation. I can not reproduce this problem on a 1.4.2 installation on my computer. Try cleaning out the tex.cache folder in either or both of matplotlib.get_cachedir() or matplotlib.get_configdir(). Tom On Mon, Nov 3, 2014, 06:24 Martin Wiebusch mwiebusc...@gmail.com wrote: I just downgraded to matplotlib 1.1.1 and now everything works. Looks like a regression to me. On Fri, 2014-10-31 at 15:53 +, Martin Wiebusch wrote: I am having trouble executing the example for typesetting labels with latex from http://matplotlib.org/users/usetex.html. Copying the standard example, tex_demo.py, to a file and executing it gives the following output: Traceback (most recent call last): File scratch.py, line 21, in module plt.savefig('tex_demo') File /usr/lib/pymodules/python2.7/matplotlib/pyplot.py, line 561, in savefig return fig.savefig(*args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/figure.py, line 1421, in savefig self.canvas.print_figure(*args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/backend_bases.py, line 2220, in print_figure **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 505, in print_png FigureCanvasAgg.draw(self) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 451, in draw self.figure.draw(self.renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/figure.py, line 1034, in draw func(*args) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/axes.py, line 2086, in draw a.draw(renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/axis.py, line 1105, in draw self.label.draw(renderer) File /usr/lib/pymodules/python2.7/matplotlib/artist.py, line 55, in draw_wrapper draw(artist, renderer, *args, **kwargs) File /usr/lib/pymodules/python2.7/matplotlib/text.py, line 594, in draw self._fontproperties, angle, mtext=self) File /usr/lib/pymodules/python2.7/matplotlib/backends/backend_agg.py, line 241, in draw_tex self._renderer.draw_text_image(Z, x, y, angle, gc) OverflowError: cannot convert float infinity to integer My system is Linux mwlaptop 3.16.0-24-generic #32-Ubuntu SMP Tue Oct 28 13:07:32 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux My matplotlib version is 1.3.1, and I am using standard packages from my Ubuntu 14.10 distribution. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- Thomas Caswell tcasw...@gmail.com -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
[Matplotlib-users] Fwd: tex rendering broken?
Forwarding message to list that should have gone there initialy for archiving. -- Forwarded message -- From: Martin Wiebusch mwiebusc...@gmail.com Date: Mon, Nov 3, 2014 at 8:26 AM Subject: Re: [Matplotlib-users] tex rendering broken? To: Thomas Caswell tcasw...@gmail.com On Mon, 2014-11-03 at 07:50 -0500, Thomas Caswell wrote: I can not reproduce this problem on a 1.4.2 installation on my computer. Try cleaning out the tex.cache folder in either or both of matplotlib.get_cachedir() or matplotlib.get_configdir(). Thanks. Clearing the cache directory did the trick. It might be a good idea to mention matplotlib.get_cachedir() and matplotlib.get_configdir() explicitly under 'Troubleshooting' on the web page. Currently there is a link which points you to matplotlib.get_configdir() (which was empty in my case) but not matplotlib.get_cachedir(). Best regards, Martin. -- Thomas Caswell tcasw...@gmail.com -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] savefig and StringIO error on Python3
Le 02/11/2014 09:34, Scott Lasley a écrit : I wish I could say that it was because of a deep understanding of the inner workings of matplotlib or a rock solid grasp of python 3's bytes vs strings, but it wasn't. fig.savefig threw the TypeError: string argument expected, got 'bytes' exception, so I figured BytesIO might work better with the binary png data than StringIO, and it did. As a side note on the bytes vs strings topic, there is PyCon video that I found immensely useful: Pragmatic Unicode, or How Do I Stop the Pain http://nedbatchelder.com/text/unipain.html IMHO a 30 minutes talk worth watching. best, Pierre -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib save image as postscript, when xlabel is saved as text and not path
Anyone know how to solve this thing? Thanks. On 2 November 2014 03:40, oren oren...@gmail.com wrote: How can I save a matplotlib figure with text as a postscript image and that the text will be saved as text. Currently when I save the image as postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as path and not as text.. Is it possible to save it as text? If I use the following code ( use latex) matplotlib.rcParams[text.usetex] = True and save the image as postscript the text is saved as text.. But I do not want to use latex.. Is it possible without latex? Thanks Question also on stackoverflow http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path -- View this message in context: http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib save image as postscript, when xlabel is saved as text and not path
What happens when you save as a postscript file with matplotlib.rcParams[text.usetex] = False? -paul On Mon, Nov 3, 2014 at 7:11 AM, Oren oren...@gmail.com wrote: Anyone know how to solve this thing? Thanks. On 2 November 2014 03:40, oren oren...@gmail.com wrote: How can I save a matplotlib figure with text as a postscript image and that the text will be saved as text. Currently when I save the image as postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as path and not as text.. Is it possible to save it as text? If I use the following code ( use latex) matplotlib.rcParams[text.usetex] = True and save the image as postscript the text is saved as text.. But I do not want to use latex.. Is it possible without latex? Thanks Question also on stackoverflow http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path -- View this message in context: http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] matplotlib save image as postscript, when xlabel is saved as text and not path
Can just go straight to PDF? What happens then? It might also be informative to explain why using LaTeX is undesirable in your situation. -p On Mon, Nov 3, 2014 at 11:52 AM, Oren oren...@gmail.com wrote: Thanks for the respond Paul, But It still the same... This is how it looks like when I use matplotlib.rcParams[text.usetex] = False ( or noting at all ) [image: Inline images 1] and this is when I use matplotlib.rcParams[text.usetex] = True [image: Inline images 2] As you can see, One is text and the other is path of points.. Thank You, Oren. On 3 November 2014 21:40, Paul Hobson pmhob...@gmail.com wrote: What happens when you save as a postscript file with matplotlib.rcParams[text.usetex] = False? -paul On Mon, Nov 3, 2014 at 7:11 AM, Oren oren...@gmail.com wrote: Anyone know how to solve this thing? Thanks. On 2 November 2014 03:40, oren oren...@gmail.com wrote: How can I save a matplotlib figure with text as a postscript image and that the text will be saved as text. Currently when I save the image as postscript all the text in the image ( xlabel, ylabel etc.. ) is saved as path and not as text.. Is it possible to save it as text? If I use the following code ( use latex) matplotlib.rcParams[text.usetex] = True and save the image as postscript the text is saved as text.. But I do not want to use latex.. Is it possible without latex? Thanks Question also on stackoverflow http://stackoverflow.com/questions/26649266/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path -- View this message in context: http://matplotlib.1069221.n5.nabble.com/matplotlib-save-image-as-postscript-when-xlabel-is-saved-as-text-and-not-path-tp44261.html Sent from the matplotlib - users mailing list archive at Nabble.com. -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Old-style/text figures
Hi again, I didn't see any on-list answer, but got an off-list suggestion to use an rc parameter to set a LaTeX preamble. I played around a little and thought I should report on what I found, especially since it seems that there is room for improvement here and I'd be interested to help. Here are the relevant rc params that I have set: font.size : 17, font.family : serif, font.serif : [TeX Gyre Pagella], pgf.rcfonts : True, pgf.preamble: [r\usepackage{amsmath,amssymb}, r\usepackage{fontspec}, r\defaultfontfeatures{Numbers=OldStyle}], A couple of points to note here: * I'm using the PGF backend -- this ran a bit faster and produced much smaller files than MPL rendering with TeX labels (text.usetex = True). Also, I have data files with labels using macros like \text which MPL MathText doesn't support, so I need to be able to include amsmath. * I've had to set TeX Gyre Pagella rather than Palatino, since this SE question points out that fontspec's Palatino doesn't support small-caps and old-style figures:http://tex.stackexchange.com/questions/2994/fontspec-palatino-with-small-caps-and-old-style-figures * Although the backend uses fontspec, I have to import it explicitly in my preamble, because the MPL import and use of fontspec happens _after_ where the pgf.preamble key is inserted. Actually, given that I found fontspec doesn't seem to do the right thing for most math fonts, maybe I need to ignore the rcfonts setting and do it a bit more manually if I want full control -- pity. If I ask this configuration to output a PDF file, though, I don't get old-style figures as intended. So I started looking at the generated TeX source by outputting as .pgf and wrapping in a little LaTeX file like this: \documentclass[12pt,minimal]{standalone} \usepackage{pgf} \usepackage{amsmath,amssymb} \usepackage{fontspec} \setmainfont[Numbers=OldStyle]{TeX Gyre Pagella} \begin{document} \input{plot.pgf} \end{document} I've attached the result of this with the default MPL .pgf output as plot-mpldefault.pdf. A couple of things are notable in that plot: * Old-style figures are used in the legend (where math mode is not used), but the axis tick labels are not. * The full-size figures on the axes are very thin weight compared to the text axis labels -- I knew something had looked a bit wrong in the default output! Looking in the .pgf file, the reason is clear. The axis ticks are in display math mode, like this: \pgftext[x=0.987638in,y=1.778400in,right,]{{\rmfamily\fontsize{17.00}{20.40}\selectfont \(\displaystyle 1.05\)}}% ^^ I removed the \(\displaystyle and \) from the file and then recompiled with and without the Numbers=OldStyle spec in the wrapper, producing the attached plot-textoldstyle.pdf and plot-textlining.pdf figures. In both of these the weight of the tick labels is much more balanced with the other labels than in the default; the old-style or lining figure style is more a matter of personal preference, but I would like to have the option. Apologies for the long email! I'd appreciate any feedback. It seems that there are a couple of small tweaks which would greatly improve the MPL TeX/PGF output, although they probably have side-effects of which I'm unaware: * Don't put tick labels in math mode by default (i.e. unless a special ticker is used). In our previous code, which I'm trying to reproduce in MPL, even exponent-format tick labels were typeset as 10$^\text{exp}$ which automatically gets the font weights and styles correct. Is the current \(\displaystyle etc. specified by the default ticker or is it specific to the PGF backend? * I checked a bit, and fontspec seems a bit ropey when it comes to changing math fonts to match the text font; I had to \usepackage[osf]{mathpazo} before importing fontspec to get a correctly weighted math font. mathspec is maybe worth investigation. Thanks in advance, and thanks for tolerating this plot-cosmetics obsessiveness ;-) Andy On 27/10/14 14:35, Andy Buckley wrote: Hi, I'm using MPL to implement a new plotter for a project has so far been using a custom-written LaTeX+pstricks script. Despite being slow and a bit hacky, the output is really quite nice and I want to try and emulate it as closely as possible via MPL; for example: https://users.hepforge.org/~buckley/atlas-py8-shower-e/ATLAS_2012_I1094568/d03-x02-y01.pdf I more or less have this working, but would really like to be able to use the old-style figures (OSF) numerals with variable baseline (aka lower-case or text figures cf. http://en.wikipedia.org/wiki/Text_figures), which give those plots quite a bit of their character. Probably this will anyway be possible only with the TeX or PGF backend to MPL, but what would be the best way to enable OSF figures from MPL? If I correctly understand the backend, the rc params font.family e.g. font.serif are passed to the
[Matplotlib-users] Problem extending a custom colormap
I often like to define my own colormaps using hex strings, e.g. hex_list = ['#FFF295', '#FFD555', '#FF850B', '#D55000', '#D5', '#550040', '#600080', '#80', '#D5', '#0B85FF', '#55AAFF', '#95CAFF'] However, when I pass them to contourf and try to extend the colorbar... plt.contourf(x, y, data, colors=hex_list, extend='both') ... it always ends up that the color of the final segment on the extended ends of the colorbar is the same color as the extension segment (i.e. the bit in the little arrow). This happens even when hex_list is much longer than the actual number of segments required. Has anyone else had this problem? -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users
Re: [Matplotlib-users] Problem extending a custom colormap
On 2014/11/03, 2:19 PM, Damien Irving wrote: I often like to define my own colormaps using hex strings, e.g. hex_list = ['#FFF295', '#FFD555', '#FF850B', '#D55000', '#D5', '#550040','#600080', '#80', '#D5', '#0B85FF', '#55AAFF', '#95CAFF'] However, when I pass them to contourf and try to extend the colorbar... plt.contourf(x, y, data, colors=hex_list, extend='both') ... it always ends up that the color of the final segment on the extended ends of the colorbar is the same color as the extension segment (i.e. the bit in the little arrow). This happens even when hex_list is much longer than the actual number of segments required. You need to use the levels kwarg to specify the contour interval boundaries, and then your list of colors needs to have a length equal to len(levels) + 1. In other words, the number of colors listed in the colors kwarg needs to be *exactly* the number needed to fill between the specified levels, plus one for each requested extend direction, if any. plt.contourf(x, y, data, levels=[0, 1, 2], colors=['red', 'blue, 'brown', 'black'], extend='both') That should give you blue and brown for 0-1 and 1-2; with red for data0, and black for data2. Eric Has anyone else had this problem? -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- ___ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users