SourceForge logo
SourceForge logo
Menu

matplotlib-users — Discussion related to using matplotlib

You can subscribe to this list here.

2003 Jan
Feb
Mar
Apr
May
(3)
Jun
Jul
Aug
(12)
Sep
(12)
Oct
(56)
Nov
(65)
Dec
(37)
2004 Jan
(59)
Feb
(78)
Mar
(153)
Apr
(205)
May
(184)
Jun
(123)
Jul
(171)
Aug
(156)
Sep
(190)
Oct
(120)
Nov
(154)
Dec
(223)
2005 Jan
(184)
Feb
(267)
Mar
(214)
Apr
(286)
May
(320)
Jun
(299)
Jul
(348)
Aug
(283)
Sep
(355)
Oct
(293)
Nov
(232)
Dec
(203)
2006 Jan
(352)
Feb
(358)
Mar
(403)
Apr
(313)
May
(165)
Jun
(281)
Jul
(316)
Aug
(228)
Sep
(279)
Oct
(243)
Nov
(315)
Dec
(345)
2007 Jan
(260)
Feb
(323)
Mar
(340)
Apr
(319)
May
(290)
Jun
(296)
Jul
(221)
Aug
(292)
Sep
(242)
Oct
(248)
Nov
(242)
Dec
(332)
2008 Jan
(312)
Feb
(359)
Mar
(454)
Apr
(287)
May
(340)
Jun
(450)
Jul
(403)
Aug
(324)
Sep
(349)
Oct
(385)
Nov
(363)
Dec
(437)
2009 Jan
(500)
Feb
(301)
Mar
(409)
Apr
(486)
May
(545)
Jun
(391)
Jul
(518)
Aug
(497)
Sep
(492)
Oct
(429)
Nov
(357)
Dec
(310)
2010 Jan
(371)
Feb
(657)
Mar
(519)
Apr
(432)
May
(312)
Jun
(416)
Jul
(477)
Aug
(386)
Sep
(419)
Oct
(435)
Nov
(320)
Dec
(202)
2011 Jan
(321)
Feb
(413)
Mar
(299)
Apr
(215)
May
(284)
Jun
(203)
Jul
(207)
Aug
(314)
Sep
(321)
Oct
(259)
Nov
(347)
Dec
(209)
2012 Jan
(322)
Feb
(414)
Mar
(377)
Apr
(179)
May
(173)
Jun
(234)
Jul
(295)
Aug
(239)
Sep
(276)
Oct
(355)
Nov
(144)
Dec
(108)
2013 Jan
(170)
Feb
(89)
Mar
(204)
Apr
(133)
May
(142)
Jun
(89)
Jul
(160)
Aug
(180)
Sep
(69)
Oct
(136)
Nov
(83)
Dec
(32)
2014 Jan
(71)
Feb
(90)
Mar
(161)
Apr
(117)
May
(78)
Jun
(94)
Jul
(60)
Aug
(83)
Sep
(102)
Oct
(132)
Nov
(154)
Dec
(96)
2015 Jan
(45)
Feb
(138)
Mar
(176)
Apr
(132)
May
(119)
Jun
(124)
Jul
(77)
Aug
(31)
Sep
(34)
Oct
(22)
Nov
(23)
Dec
(9)
2016 Jan
(26)
Feb
(17)
Mar
(10)
Apr
(8)
May
(4)
Jun
(8)
Jul
(6)
Aug
(5)
Sep
(9)
Oct
(4)
Nov
Dec
2017 Jan
(5)
Feb
(7)
Mar
(1)
Apr
(5)
May
Jun
(3)
Jul
(6)
Aug
(1)
Sep
Oct
(2)
Nov
(1)
Dec
2018 Jan
Feb
Mar
Apr
(1)
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2020 Jan
Feb
Mar
Apr
May
(1)
Jun
Jul
Aug
Sep
Oct
Nov
Dec
2025 Jan
(1)
Feb
Mar
Apr
May
Jun
Jul
Aug
Sep
Oct
Nov
Dec
S M T W T F S



1
2
(1)
3
4
(1)
5
6
(1)
7
(12)
8
(6)
9
(16)
10
(2)
11
12
13
14
(1)
15
16
17
(1)
18
(1)
19
20
(2)
21
22
(4)
23
(2)
24
25
26
(1)
27
(6)
28
(1)
29
(6)
30
(3)
31
(4)

Showing 2 results of 2

From: Luis M. García-C. G. <lui...@gm...> - 2014年01月20日 11:57:02
Attachments: signature.asc
El Lunes, 20 de enero de 2014 09:23:59 Mauricio Calvao escribió:
> Your suggestion did work (when adding a colon after pgf.preamble, in the
> matplotlibrc file)
Ouch!
> 1) in the main tex file I added some surrounding text, to be able to check
> the matching of the fonts and it looked as if the family font were ok, but
> the size of the labels (xlabel and ylabel) as well as of the tick marker
> labels (numbers) were distinct (bigger) than of the surrounding main body
> text...
Oh, I'd forgotten that:
 matplotlibrc contents:
 [...]
 backend : Qt4Agg
 font.size : 10.0
 pgf.rcfonts : False
 pgf.texsystem : pdflatex
 pgf.preamble : \usepackage{/dev/shm/foo/foo}
 [...]
Yes, you have to set the same basic font size as you are going to use in your 
document, it is not fully automatic. If you are using something like 
\documentclass[12pt]{article}, you have to set font.size : 12.0. You can 
programmatically change font.size from within the python script after parsing 
the main tex file:
#!/usr/bin/env python
import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import re
with open('foo.tex') as f:
 for line in f:
 if 'documentclass' in line:
 try:
 match = re.search('[0-9]+pt', line).group(0)
 font_size = float(match.replace('pt', ''))
 except:
 font_size = 10.
mpl.rcParams.update({'font.size': font_size})
x = np.linspace(0, 4. * np.pi)
y = np.sin(x) ** 2
fig = plt.figure(figsize=(3, 3))
ax = plt.gca()
ax.plot(x, y)
ax.set_xlabel(r'$x$')
ax.set_ylabel(r'$\sin \left( x \right) ^ 2$')
plt.savefig('/path_to_your_project/foo.pgf')
This code reads your tex file (foo.tex), searches for a line containing 
\documentclass, searches for the font size (10pt, 9pt, 12pt, whatever) and 
uses it as the plot standard font size. If no font size parameter is found in 
foo.tex, it defaults to 10pt.
> 2) since no separate file, with only the text objects (letters, numbers,
> labels, annotations, legends, etc) is generated, I am not able to change
> them accordingly, later, via Latex itself. That's what gnuplot and inkscape
> allow us to do, through the generation of an explicit separate file for the
> text objects...
Indeed, you can change the text. It is in the pgf file, inside \pgftext 
environments. The example script I've used generates, among other things, the 
following line in foo.pgf:
 \pgftext[x=0.072574in,y=1.500000in,,bottom,rotate=90.000000]
{{\sffamily\fontsize{10.000000}{12.000000}\selectfont \(\displaystyle \sin 
\left( x \right) ^ 2\)}}%
which is the y label.
It is far from ideal, whith its lack of resizing capabilities, but maybe in 
future versions the pgf code gets some improvements so it uses tikz and allows 
to use things like tikzscale (which, as far as i know, can't be used now to 
scale a figure generated by matplotlib).
-- 
Luis Miguel García-Cuevas González
From: Luis M. García-C. G. <lui...@gm...> - 2014年01月20日 10:44:35
Attachments: signature.asc
El Sábado, 18 de enero de 2014 17:09:30 Mauricio Calvao escribió:
> Hi
> 
> I would like to know whether it is possible to save a simple (or complex,
> for that matter) figure in 2 files, such that one of them contains, for
> instance, the lines or points or surfaces ("graphics") typically in pdf
> format and the other contains the whole text of the figure (labels,
> numbers, title, annotations, etc). This is achievable in gnuplot via its
> epslatex terminal and is highly convenient, in the sense that the fonts of
> the figure match exactly the fonts (size, family, etc) of the main text in
> which it will be embedded; even if we resize the figure, the corresponding
> text, in perfect beautiful Latex, will match the surrounding main body text
> of the master document. This is also possible with Inkscape and its
> PDF+Latex saving option.
> 
> Is this possible with matplotlib or are there any workarounds?
If you only want to get a figure where the rendering of the text is done with 
latex, you can use savefig in pgf format. As an example:
 Contents of matplotlibrc:
 [...]
 backend : Qt4Agg
 pgf.rcfonts : False
 pgf.texsystem : pdflatex
 pgf.preamble \usepackage{path_to_your_document/foo}
 [...]
 Script to create the figure:
 #!/usr/bin/env python
 import matplotlib.pyplot as plt
 import numpy as np
 x = np.linspace(0, 4. * np.pi)
 y = np.sin(x) ** 2
 fig = plt.figure(figsize=(3, 3))
 ax = plt.gca()
 ax.plot(x, y)
 ax.set_xlabel(r'$x$')
 ax.set_ylabel(r'$\sin \left( x \right) ^ 2$')
 plt.savefig('path_to_your_document/foo.pgf')
 Main document:
 \documentclass{article}
 \usepackage{foo}
 \begin{document}
 \begin{figure}[H]
 \input{foo.pgf}
 \end{figure}
 \end{document}
 Style file (foo.sty):
 
 \usepackage{amsmath}
 \usepackage{float}
 \usepackage{fouriernc}
 \usepackage{graphicx}
 \usepackage{pgf}
The main problem with this, is that you can not resize the figure (i.e., with 
a resizebox) without also resizing the text. If you want to get the figure 
with a bigger or smaller size, you have to regenerate the file changing its 
figsize. The benefit of this method is that all the drawing is made by latex, 
so you have perfectly matched fonts, colors...
-- 
Luis Miguel García-Cuevas González

Showing 2 results of 2

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.
Thanks for helping keep SourceForge clean.
X





Briefly describe the problem (required):
Upload screenshot of ad (required):
Select a file, or drag & drop file here.
Screenshot instructions:

Click URL instructions:
Right-click on the ad, choose "Copy Link", then paste here →
(This may not be possible with some types of ads)

More information about our ad policies

Ad destination/click URL:

AltStyle によって変換されたページ (->オリジナル) /