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
(14) |
2
(3) |
3
|
4
|
5
|
6
(6) |
7
(8) |
8
(5) |
9
|
10
|
11
|
12
(7) |
13
(1) |
14
|
15
(2) |
16
(5) |
17
(8) |
18
|
19
(1) |
20
(2) |
21
(3) |
22
(1) |
23
(3) |
24
(1) |
25
|
26
|
27
|
28
|
29
(5) |
30
(3) |
31
|
Dear colleagues, I had a similar issues with a large plot and several thousands of elements printed under Linux and Qt4Agg back-end. At the PDF render I got some vector overlay and distortion of markers in the drawing, so I've changed the plotting output into a two step process, generating first a high resolution ".png" file and the using the Python image library to compress it into a much smaller .jpeg image output, which produces a browser friendly file or input source for Adobe .pdf editors like OpenOffice. Source: import Image # size for jpg and png output (16000 x 12000 pixel) w = 80 h = 60 # dpi_resolution = 400 fig.set_size_inches(w,h) DPI = fig.get_dpi() print "DPI:", DPI Size = fig.get_size_inches() print "Size in Inches", Size myformats = plt.gcf().canvas.get_supported_filetypes() print "Supported formats are: " + str(myformats) mybackend = plt.get_backend() print "Backend used is: " + str(mybackend) # save screen copy fig.savefig('myplot.png', format='png', dpi= (dpi_resolution)) # JPEG compression with quality of 10 myimage = Image.open('myplot.png') myimage = myimage.resize((16000, 12000), Image.ANTIALIAS) #quality = 10% .. very high compression with few blurs quality_val = 10 myimage.save('myplot.jpg', 'JPEG', quality=quality_val) The visual result looks acceptable with no distortion. This process gives some control about compression and quality. Hope this is useful. Regards, Claude Claude Falbriard Certified IT Specialist L2 - Middleware AMS Hortolândia / SP - Brazil phone: +55 13 9 9760 0453 cell: +55 13 9 8117 3316 e-mail: cl...@br... From: Jouni K. Seppänen <jk...@ik...> To: mat...@li..., Date: 02/05/2014 12:55 Subject: Re: [Matplotlib-users] Millions of data points saved to pdf nertskull <ner...@gm...> writes: > If I change that line the "if True:" then I get MUCH better results. > But I also get enormous file sizes. That's interesting! It means that your pdf viewing program (which one, by the way? Adobe Reader or some alternative?) is slow at compositing a large number of prerendered markers, or perhaps it just renders each of them again and again instead of prerendering, and does so more slowly than if they were part of the same path. > I've taken a subset of 10 of my 750 graphs. > > Those 10, before changing the backend, would make file sizes about about > 290KiB. After changing the backend, if I use plot(x, y, '-') I still > get a file size about 290KiB. > > But after changing the backend, if I use plot(x, y, '.') for my markers, > my file size is no 21+ MB. Just for 10 of my graphs. I'm afraid making > all 750 in the same pdf may be impossible at those size. Does using ',' (comma) instead of '.' (full stop) as the marker help? I think the '.' marker is a circle, just at a small size, while the ',' marker is just two very short lines in the pdf backend. If the ',' marker produces an acceptable file size but its shape is not good enough, we could experiment with creating a marker of intermediate complexity. One thing that I never thought about much is the precision in the numbers the pdf backend outputs in the file. It seems that they are being output with a fixed precision of ten digits after the decimal point, which is probably overkill. There is currently no way to change this except by editing the source code - the critical line is r = ("%.10f" % obj).encode('ascii') where 10 is the number of digits used. The same precision is used for all floating-point numbers, including various transformation matrices, so I can't offer a simple rule for how large deviations you will cause by reducing the precision - you could experiment by making one figure with the existing code and another with '%.3f', and see if the latter looks good enough at the kind of zoom levels you are going to use (and if it really reduces the file size much - there's a compression layer on top of the ASCII representation). That reminds me: one thing that could have an effect is the pdf.compression setting, which defaults to 6 but you can set it to 9 to make the compressed size a little bit smaller, at the expense of spending more time when writing the file. That's not going to be a major difference, though. > Is there anyway to have reasonable pdf sizes as well as this improved > performance for keeping them in vector format? Like others have recommended, rendering huge clouds of single points is a problematic task. I think it's an entirely valid thing to ask for, but it's not likely that there will be a perfect solution, and some other way of visualizing the data may be needed. Bokeh (suggested by Benjamin Root) looks like something that could fit your needs better than a pdf file in a viewer. -- Jouni K. Seppänen http://www.iki.fi/jks ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available. Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Matplotlib-users mailing list Mat...@li... https://lists.sourceforge.net/lists/listinfo/matplotlib-users
nertskull <ner...@gm...> writes: > If I change that line the "if True:" then I get MUCH better results. > But I also get enormous file sizes. That's interesting! It means that your pdf viewing program (which one, by the way? Adobe Reader or some alternative?) is slow at compositing a large number of prerendered markers, or perhaps it just renders each of them again and again instead of prerendering, and does so more slowly than if they were part of the same path. > I've taken a subset of 10 of my 750 graphs. > > Those 10, before changing the backend, would make file sizes about about > 290KiB. After changing the backend, if I use plot(x, y, '-') I still > get a file size about 290KiB. > > But after changing the backend, if I use plot(x, y, '.') for my markers, > my file size is no 21+ MB. Just for 10 of my graphs. I'm afraid making > all 750 in the same pdf may be impossible at those size. Does using ',' (comma) instead of '.' (full stop) as the marker help? I think the '.' marker is a circle, just at a small size, while the ',' marker is just two very short lines in the pdf backend. If the ',' marker produces an acceptable file size but its shape is not good enough, we could experiment with creating a marker of intermediate complexity. One thing that I never thought about much is the precision in the numbers the pdf backend outputs in the file. It seems that they are being output with a fixed precision of ten digits after the decimal point, which is probably overkill. There is currently no way to change this except by editing the source code - the critical line is r = ("%.10f" % obj).encode('ascii') where 10 is the number of digits used. The same precision is used for all floating-point numbers, including various transformation matrices, so I can't offer a simple rule for how large deviations you will cause by reducing the precision - you could experiment by making one figure with the existing code and another with '%.3f', and see if the latter looks good enough at the kind of zoom levels you are going to use (and if it really reduces the file size much - there's a compression layer on top of the ASCII representation). That reminds me: one thing that could have an effect is the pdf.compression setting, which defaults to 6 but you can set it to 9 to make the compressed size a little bit smaller, at the expense of spending more time when writing the file. That's not going to be a major difference, though. > Is there anyway to have reasonable pdf sizes as well as this improved > performance for keeping them in vector format? Like others have recommended, rendering huge clouds of single points is a problematic task. I think it's an entirely valid thing to ask for, but it's not likely that there will be a perfect solution, and some other way of visualizing the data may be needed. Bokeh (suggested by Benjamin Root) looks like something that could fit your needs better than a pdf file in a viewer. -- Jouni K. Seppänen http://www.iki.fi/jks
On 01/05/2014 19:50, nertskull wrote: > Is there anyway to have reasonable pdf sizes as well as this improved > performance for keeping them in vector format? As others tried to explain to you, plotting that many points in a plot does not make any sense. The only thing that makes sense is to down-sample your data to a manageable size. Depending on which features of your data you are interested in, there are different methods for doing that. PS: which viewer are you using to render the PDF? I believe different renders may have substantially different performances in rendering such PDFs... Cheers, Daniele