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) |
2
(3) |
3
(5) |
4
(10) |
5
(1) |
6
|
7
(1) |
8
(1) |
9
(5) |
10
(5) |
11
(5) |
12
|
13
(1) |
14
(3) |
15
(8) |
16
(9) |
17
(16) |
18
(1) |
19
(2) |
20
(4) |
21
(8) |
22
(10) |
23
(9) |
24
(8) |
25
(2) |
26
(1) |
27
(11) |
28
(9) |
29
(9) |
30
(15) |
31
(6) |
|
|
On 1/31/2013 12:55 PM, Benjamin Root wrote: > I was submitting an article to an IEEE journal once. IEEE's submission process for images gives back fairly useful error messages, and it told me > that my images (that I generated from matplotlib) needed to be in CMYK format. I had access to Adobe Illustrator on my wife's computer, and used its > tools to convert those files to CMYK, and resubmitted it to IEEE's submission page. The error message I got back? "Images need to be in RGB format" http://matplotlib.org/users/whats_new.html#pgf-tikz-backend fwiw, Alan Isaac
On Thu, Jan 31, 2013 at 12:08 PM, Dieter <die...@ed...>wrote: > > > Is there really no practical way to do this? How do others convert RGB > plots > to CMYK? (Importing my data into Matlab and plotting them there cannot be > the only possibility!) > > Funny story about that. I was submitting an article to an IEEE journal once. IEEE's submission process for images gives back fairly useful error messages, and it told me that my images (that I generated from matplotlib) needed to be in CMYK format. I had access to Adobe Illustrator on my wife's computer, and used its tools to convert those files to CMYK, and resubmitted it to IEEE's submission page. The error message I got back? "Images need to be in RGB format" I forget what I did to resolve this problem (I think I did some funky eps-->ps-->pdf-->eps thing, I don't remember), but what I submitted was certainly RGB, so, go figure... Cheers! Ben Root
Thanks everybody for the input. As I see the answer is no, but it could be implemented. I did an extensive search, but I even struggle to find a good and practical solution how to convert a VECTORPLOT RGB to CMYK on a linux system. (One way I often found would be the Adobe suits, which I do not have.) I gave mpl_ps_cmyk a go, but execution failed, and the page looks dated. Furthermore, Adobes seems to provide ICCs only for Windows and Mac, but not for Linux. ImageMagick rasterizes the figure, the same with GIMP. I agree that this should be done on the publisher's side, but as a matter of fact it is the requirement of some journals. Is there really no practical way to do this? How do others convert RGB plots to CMYK? (Importing my data into Matlab and plotting them there cannot be the only possibility!) Thanks everybody again, much appreciated! Dieter -- View this message in context: http://matplotlib.1069221.n5.nabble.com/CMYK-tp40352p40379.html Sent from the matplotlib - users mailing list archive at Nabble.com.
On 01/30/2013 08:02 PM, Benjamin Root wrote: > > > On Wed, Jan 30, 2013 at 1:46 PM, Mads Ipsen <mad...@gm... > <mailto:mad...@gm...>> wrote: > > On 01/30/2013 05:03 PM, Benjamin Root wrote: >> >> >> On Tue, Jan 29, 2013 at 5:12 PM, Mads Ipsen <mad...@gm... >> <mailto:mad...@gm...>> wrote: >> >> Hi, >> >> I spend some time writing up the question below on >> Stackoverflow which immediately was closed as a duplicate of >> other posts. To my best knowledge, these posts did not answer >> my questions - so I'll try my luck here instead: >> >> I am using the qt backengine for setting up a QWidget that >> embeds a matplotlib scene. When the widget is closed it >> appears that many of the matplotlib objects that were part of >> the plot still are alive in Python space. >> >> My question is basically the following: What actions should I >> take to clean up the figure and axes objects etc. that were >> part of the plot widget? The qt backend comes with a figure >> manager, but it appears a little unclear how it should be used. >> >> I have attached a small unit test example that sets up a >> plot. When the plot appears, just close it, and the test will >> garbage collects the plot, and then display info of the >> matplotlib objects that are still alive in Python space. >> Clearly both the path of the plot, and several Bbox objects >> are still referenced. >> >> Our current unit test suite contains almost 10000 GUI tests >> and its imperative that proper object space clean up is done >> after each test. Any help is much appreciated. >> >> Best regards, >> >> Mads >> >> >> Would "fig.clf()" do what you need? >> >> Ben Root >> > Thanks for the feedback. > > The trick is to get this done automatically when the widget is > closed. If you look in backend_qt4.py in the constructor of > FigureCanvasQT you'll find > > QtCore.QObject.connect(self, QtCore.SIGNAL('destroyed()'), > self.close_event) > > which should perform the steps below when close_event is called > > event = CloseEvent(s, self, guiEvent=guiEvent) > self.callbacks.process(s, event) > > If I insert print statements, the signal is ignored with > matplotlib 1.1.0, but called with 1.2.0 (which uses a lambda > function in the above connection).But inspecting pythons objects > after the close() method is called on the widget, it seems that - > at least - the paths associated with plot actually still exist. > > So I'm just a bit worried if there already is existing > functionality in the FigureCanvasQTAgg object that can do these > things for me. And if so, how to use them? > > Best regards, > > Mads > > > Actually, now I am starting to recall a bug fix that came shortly > after the 1.2.0 release related to properly setting up the destruction > signal of the QT figure object. Could you test your code-base with > the maintenance branch (1.2.x)? or master? > > Cheers! > Ben Root > Hi, I attach log files from running my setup 'plot.py' with 1.1.0, 1.2.0, and master. To my judgement - if an automated memory clean-up is handled by the FigureCanvasQTAgg class - I must be abusing the usage of the class, since all logs still show the presence of paths, labels, bbox's, etc. Also notice that log-1.2.0 show the presence of a path with hundreds of data points, which are not present in the other logs. Best regards, Mads -- +-----------------------------------------------------+ | Mads Ipsen | +----------------------+------------------------------+ | Gåsebæksvej 7, 4. tv | | | DK-2500 Valby | phone: +45-29716388 | | Denmark | email: mad...@gm... | +----------------------+------------------------------+
I agree with Eric that what we need is a backend that support CMYK color space. But matplotlib may need to provide some framework for handling the color profiles etc. My limited experience with ps_myck backend ( https://github.com/leejjoon/mpl_ps_cmyk) suggests that, as far as matplotlib provide some framework for color conversion, implementing/modifying a backend to support cmyk should not be difficult. So, yes, we need someone to write a MEP. Regards, -JJ On Thu, Jan 31, 2013 at 4:30 AM, Eric Firing <ef...@ha...> wrote: > On 2013年01月30日 9:13 AM, Paul Kuin wrote: > > For what it's worth. > > > > While the RGB system is native to monitor devices, since they produce > > light of certain colours, CMYK is the colour system of printer > > materials etc. since they absorb the colours, but reflect those we > > see. That means designs must be made in CMYK for pronter materials > > and in RGB for our devices. The response of each medium or device is > > different. RGB will have part of the colour space not accessible in > > some devices, while in printed materials it is different again. The > > basic thing is colour space, while RGB and CMYK can be seen as a map. > > In the real world you have to look at the product to see if the > > colours come out right. > > > > Not sure what to make of any implementation of this, but a simple > > mapping should not be impossible. > > Granted, a mapping within the intersection of the two spaces > respectively accessibly to RGB and CMYK is possible, but I think it > makes more sense to do it as a separate operation on the ps or pdf file > than to try to build it into mpl. If it were to be built in, I think it > would have to be bolted onto the ps and pdf backends. I suspect that > the alpha channel will make this quite complicated, much more so than a > simple mapping; it will require an intermediate rendering step. > > Eric > > > > > Cheers, > > > > Paul > > > > On Wed, Jan 30, 2013 at 6:38 PM, Eric Firing <ef...@ha...> wrote: > >> On 2013年01月30日 6:43 AM, Michael Droettboom wrote: > >>> We don't currently have any support -- and we're still struggling in > >>> certain areas supporting RGBA consistently across the system. > >>> > >>> I think this would take someone writing a MEP (as a preliminary study > of > >>> all of the changes that would be involved) and then shepherding it > >>> through implementation. > >> > >> My somewhat vague recollection is that CMYK is fundamentally > >> output-device dependent, and therefore it really doesn't make much sense > >> for a plotting library to support it directly. The conversion from RGBA > >> should be made by the publisher, knowing what the output device > >> characteristics are. > >> > >> Eric > >> > >>> > >>> Mike > >>> > >>> On 01/30/2013 11:10 AM, Ignas Anikevičius wrote: > >>>> On 29/01/13 03:37:51 -0800, Dieter wrote: > >>>>> I was wondering if anything changed regarding this within the last > 2.5 years > >>>>> since the last thread. Is there a way to produce CMYK with > matplotlib? > >>>> Hello everybody, > >>>> > >>>> I would be also interested in how to produce CMYK graphics without > >>>> external fiddling. > >>>> > >>>> Cheers, > >>>> Ignas > > > > ------------------------------------------------------------------------------ > 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_d2d_jan > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users >
Something wrong with the figure in the gallery: custom_scale_example.py <http://matplotlib.org/examples/api/custom_scale_example.html> It's supposed to be a Mercator scale, but the figure shown is just a linear scale plot.I also attached my plot. <http://matplotlib.1069221.n5.nabble.com/file/n40376/mercator_projection_scale.png> Anyone who could confirm this? Thx! -- View this message in context: http://matplotlib.1069221.n5.nabble.com/custom-scale-example-py-tp40376.html Sent from the matplotlib - users mailing list archive at Nabble.com.
Ben, Many thanks! Will try to use shapely package then. Masha -------------------- li...@us... On Jan 30, 2013, at 6:59 AM, Benjamin Root wrote: > > > On Tue, Jan 29, 2013 at 5:55 PM, Maria Liukis <li...@us...> wrote: > Hello, > > I tested the following code on my Mac laptop and our production Linux server both running matplotlib V1.0.1. Both machines observe the same output from the code, so I was wondering if somebody is aware of the problem or if it's some undocumented feature of "pnpoly()" function from matplotlib.nxutils? > > I use matplotlib.nxutils.pnpoly() function from matplotlib to determine if point belongs to the polygon. > The following code: > > >>> import numpy as np > >>> import matplotlib.nxutils as nx > >>> coords = np.array([[4.0, 1.0], [4.0, 4.0], [5.0, 5.0], [6.0, 4.0], [5.0, 0.0]]) > > >>> nx.pnpoly(4.0, 1.0, coords) > 1 > >>> nx.pnpoly(4.0, 4.0, coords) > 1 > >>> nx.pnpoly(5.0, 5.0, coords) > 0 > >>> nx.pnpoly(6.0, 4.0, coords) > 0 > >>> nx.pnpoly(5.0, 0.0, coords) > 0 > > The question is why first two vertexes are considered to be inside of defined polygon, and last 3 vertexes are not? My guess, it's treating the polygon as a semi-open set, and I wonder if it can be changed to make all vertexes inclusive? > > Any help would be greatly appreciated. > > Many thanks, > Masha > > The documentation for pnpoly() for that version states: > > """ > A point on the boundary may be treated as inside or outside. > See `pnpoly <http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html>`_ > """ > > Note that in version 1.2.0, the nxutils module was deprecated. pnpoly() and points_inside_poly() are now merely wrappers around the polygon's implementations of point-testing, which differs from the nxutils' implementation, so you may get slightly different results. > > Do note that the point-testing algorithm in matplotlib was more geared for visualization purposes rather than for strict geometric needs. If you need a more well-behaved point-tester (and faster if the polygon is "prepared"), use the shapely package instead. > > I hope that clears things up! > > Cheers! > Ben Root >
Hi, Trying to figure out why these two do not create the same plot. Bug or user error? import matplotlib.pyplot as plt from matplotlib.patches import FancyArrowPatch from matplotlib.collections import PatchCollection def correct_patch(pos): fig, ax = plt.subplots() for src, dst in pos: arrow = FancyArrowPatch(posA=src, posB=dst, color='k', arrowstyle='-|>', mutation_scale=30, connectionstyle="arc3") ax.add_patch(arrow) return fig def patch_collection_problem(pos): fig, ax = plt.subplots() pos = [[(.5, .5), (.25, .25)], [(.1, .5), (.2, .75)]] arrows = [] for src, dst in pos: arrows.append(FancyArrowPatch(posA=src, posB=dst, color='k', arrowstyle='-|>', mutation_scale=30, connectionstyle="arc3")) collection = PatchCollection(arrows, match_original=True) ax.add_collection(collection, autolim=False) return fig pos = [[(.5, .5), (.25, .25)], [(.1, .5), (.2, .75)]] correct_patch(pos) patch_collection_problem(pos)
On 2013年01月30日 9:13 AM, Paul Kuin wrote: > For what it's worth. > > While the RGB system is native to monitor devices, since they produce > light of certain colours, CMYK is the colour system of printer > materials etc. since they absorb the colours, but reflect those we > see. That means designs must be made in CMYK for pronter materials > and in RGB for our devices. The response of each medium or device is > different. RGB will have part of the colour space not accessible in > some devices, while in printed materials it is different again. The > basic thing is colour space, while RGB and CMYK can be seen as a map. > In the real world you have to look at the product to see if the > colours come out right. > > Not sure what to make of any implementation of this, but a simple > mapping should not be impossible. Granted, a mapping within the intersection of the two spaces respectively accessibly to RGB and CMYK is possible, but I think it makes more sense to do it as a separate operation on the ps or pdf file than to try to build it into mpl. If it were to be built in, I think it would have to be bolted onto the ps and pdf backends. I suspect that the alpha channel will make this quite complicated, much more so than a simple mapping; it will require an intermediate rendering step. Eric > > Cheers, > > Paul > > On Wed, Jan 30, 2013 at 6:38 PM, Eric Firing <ef...@ha...> wrote: >> On 2013年01月30日 6:43 AM, Michael Droettboom wrote: >>> We don't currently have any support -- and we're still struggling in >>> certain areas supporting RGBA consistently across the system. >>> >>> I think this would take someone writing a MEP (as a preliminary study of >>> all of the changes that would be involved) and then shepherding it >>> through implementation. >> >> My somewhat vague recollection is that CMYK is fundamentally >> output-device dependent, and therefore it really doesn't make much sense >> for a plotting library to support it directly. The conversion from RGBA >> should be made by the publisher, knowing what the output device >> characteristics are. >> >> Eric >> >>> >>> Mike >>> >>> On 01/30/2013 11:10 AM, Ignas Anikevičius wrote: >>>> On 29/01/13 03:37:51 -0800, Dieter wrote: >>>>> I was wondering if anything changed regarding this within the last 2.5 years >>>>> since the last thread. Is there a way to produce CMYK with matplotlib? >>>> Hello everybody, >>>> >>>> I would be also interested in how to produce CMYK graphics without >>>> external fiddling. >>>> >>>> Cheers, >>>> Ignas
For what it's worth. While the RGB system is native to monitor devices, since they produce light of certain colours, CMYK is the colour system of printer materials etc. since they absorb the colours, but reflect those we see. That means designs must be made in CMYK for pronter materials and in RGB for our devices. The response of each medium or device is different. RGB will have part of the colour space not accessible in some devices, while in printed materials it is different again. The basic thing is colour space, while RGB and CMYK can be seen as a map. In the real world you have to look at the product to see if the colours come out right. Not sure what to make of any implementation of this, but a simple mapping should not be impossible. Cheers, Paul On Wed, Jan 30, 2013 at 6:38 PM, Eric Firing <ef...@ha...> wrote: > On 2013年01月30日 6:43 AM, Michael Droettboom wrote: >> We don't currently have any support -- and we're still struggling in >> certain areas supporting RGBA consistently across the system. >> >> I think this would take someone writing a MEP (as a preliminary study of >> all of the changes that would be involved) and then shepherding it >> through implementation. > > My somewhat vague recollection is that CMYK is fundamentally > output-device dependent, and therefore it really doesn't make much sense > for a plotting library to support it directly. The conversion from RGBA > should be made by the publisher, knowing what the output device > characteristics are. > > Eric > >> >> Mike >> >> On 01/30/2013 11:10 AM, Ignas Anikevičius wrote: >>> On 29/01/13 03:37:51 -0800, Dieter wrote: >>>> I was wondering if anything changed regarding this within the last 2.5 years >>>> since the last thread. Is there a way to produce CMYK with matplotlib? >>> Hello everybody, >>> >>> I would be also interested in how to produce CMYK graphics without >>> external fiddling. >>> >>> Cheers, >>> Ignas >>> >>> ------------------------------------------------------------------------------ >>> 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_d2d_jan >>> _______________________________________________ >>> Matplotlib-users mailing list >>> Mat...@li... >>> 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_d2d_jan >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> 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_d2d_jan > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users -- * * * * * * * * http://www.mssl.ucl.ac.uk/~npmk/ * * * * Dr. N.P.M. Kuin (n....@uc...) phone +44-(0)1483 (prefix) -204256 (work) -276110 (home) mobile +44(0)7806985366 skype ID: npkuin Mullard Space Science Laboratory – University College London – Holmbury St Mary – Dorking – Surrey RH5 6NT– U.K.
On Wed, Jan 30, 2013 at 1:46 PM, Mads Ipsen <mad...@gm...> wrote: > On 01/30/2013 05:03 PM, Benjamin Root wrote: > > > > On Tue, Jan 29, 2013 at 5:12 PM, Mads Ipsen <mad...@gm...> wrote: > >> Hi, >> >> I spend some time writing up the question below on Stackoverflow which >> immediately was closed as a duplicate of other posts. To my best knowledge, >> these posts did not answer my questions - so I'll try my luck here instead: >> >> I am using the qt backengine for setting up a QWidget that embeds a >> matplotlib scene. When the widget is closed it appears that many of the >> matplotlib objects that were part of the plot still are alive in Python >> space. >> >> My question is basically the following: What actions should I take to >> clean up the figure and axes objects etc. that were part of the plot >> widget? The qt backend comes with a figure manager, but it appears a little >> unclear how it should be used. >> >> I have attached a small unit test example that sets up a plot. When the >> plot appears, just close it, and the test will garbage collects the plot, >> and then display info of the matplotlib objects that are still alive in >> Python space. Clearly both the path of the plot, and several Bbox objects >> are still referenced. >> >> Our current unit test suite contains almost 10000 GUI tests and its >> imperative that proper object space clean up is done after each test. Any >> help is much appreciated. >> >> Best regards, >> >> Mads >> > > Would "fig.clf()" do what you need? > > Ben Root > > Thanks for the feedback. > > The trick is to get this done automatically when the widget is closed. If > you look in backend_qt4.py in the constructor of FigureCanvasQT you'll find > > QtCore.QObject.connect(self, QtCore.SIGNAL('destroyed()'), > self.close_event) > > which should perform the steps below when close_event is called > > event = CloseEvent(s, self, guiEvent=guiEvent) > self.callbacks.process(s, event) > > If I insert print statements, the signal is ignored with matplotlib 1.1.0, > but called with 1.2.0 (which uses a lambda function in the above > connection). But inspecting pythons objects after the close() method is > called on the widget, it seems that - at least - the paths associated with > plot actually still exist. > > So I'm just a bit worried if there already is existing functionality in > the FigureCanvasQTAgg object that can do these things for me. And if so, > how to use them? > > Best regards, > > Mads > > Actually, now I am starting to recall a bug fix that came shortly after the 1.2.0 release related to properly setting up the destruction signal of the QT figure object. Could you test your code-base with the maintenance branch (1.2.x)? or master? Cheers! Ben Root
Hi Darhas, How did you invert the axis? I find that it works for me to do: ax.plot(x1,y1) ax2 = ax.twiny() ax2.plot(x2,y2) ax2.invert_xaxis() Jon On Wed, 2013年01月30日 at 16:45 +0000, Dharhas Pothina wrote: > Hi All, > > > I'm trying to recreate some plots from a old 1970's era report. This > is a single plot with an elevation-capacity curve and an > elevation-area curve overlaid on top of each other. > > > The plot needs to have a shared y-axis (elevation). The > elevation-capacity curve has an x-axis along the bottom that goes left > to right. The elevation-area curve has a x-axis with a different scale > that goes right to left along the top. > > > I've tried using twiny and reversing the second x axis but that ends > up reversing both. Any help would be appreciated. I've attached a low > res image of one of the original plots for reference. > > > Thanks, > > > - dharhas -- ______________________________________________________________ Jonathan D. Slavin Harvard-Smithsonian CfA js...@cf... 60 Garden Street, MS 83 phone: (617) 496-7981 Cambridge, MA 02138-1516 cell: (781) 363-0035 USA ______________________________________________________________
On 01/30/2013 05:03 PM, Benjamin Root wrote: > > > On Tue, Jan 29, 2013 at 5:12 PM, Mads Ipsen <mad...@gm... > <mailto:mad...@gm...>> wrote: > > Hi, > > I spend some time writing up the question below on Stackoverflow > which immediately was closed as a duplicate of other posts. To my > best knowledge, these posts did not answer my questions - so I'll > try my luck here instead: > > I am using the qt backengine for setting up a QWidget that embeds > a matplotlib scene. When the widget is closed it appears that many > of the matplotlib objects that were part of the plot still are > alive in Python space. > > My question is basically the following: What actions should I take > to clean up the figure and axes objects etc. that were part of the > plot widget? The qt backend comes with a figure manager, but it > appears a little unclear how it should be used. > > I have attached a small unit test example that sets up a plot. > When the plot appears, just close it, and the test will garbage > collects the plot, and then display info of the matplotlib objects > that are still alive in Python space. Clearly both the path of the > plot, and several Bbox objects are still referenced. > > Our current unit test suite contains almost 10000 GUI tests and > its imperative that proper object space clean up is done after > each test. Any help is much appreciated. > > Best regards, > > Mads > > > Would "fig.clf()" do what you need? > > Ben Root > Thanks for the feedback. The trick is to get this done automatically when the widget is closed. If you look in backend_qt4.py in the constructor of FigureCanvasQT you'll find QtCore.QObject.connect(self, QtCore.SIGNAL('destroyed()'), self.close_event) which should perform the steps below when close_event is called event = CloseEvent(s, self, guiEvent=guiEvent) self.callbacks.process(s, event) If I insert print statements, the signal is ignored with matplotlib 1.1.0, but called with 1.2.0 (which uses a lambda function in the above connection).But inspecting pythons objects after the close() method is called on the widget, it seems that - at least - the paths associated with plot actually still exist. So I'm just a bit worried if there already is existing functionality in the FigureCanvasQTAgg object that can do these things for me. And if so, how to use them? Best regards, Mads -- +-----------------------------------------------------+ | Mads Ipsen | +----------------------+------------------------------+ | Gåsebæksvej 7, 4. tv | | | DK-2500 Valby | phone: +45-29716388 | | Denmark | email: mad...@gm... | +----------------------+------------------------------+
On 2013年01月30日 6:43 AM, Michael Droettboom wrote: > We don't currently have any support -- and we're still struggling in > certain areas supporting RGBA consistently across the system. > > I think this would take someone writing a MEP (as a preliminary study of > all of the changes that would be involved) and then shepherding it > through implementation. My somewhat vague recollection is that CMYK is fundamentally output-device dependent, and therefore it really doesn't make much sense for a plotting library to support it directly. The conversion from RGBA should be made by the publisher, knowing what the output device characteristics are. Eric > > Mike > > On 01/30/2013 11:10 AM, Ignas Anikevičius wrote: >> On 29/01/13 03:37:51 -0800, Dieter wrote: >>> I was wondering if anything changed regarding this within the last 2.5 years >>> since the last thread. Is there a way to produce CMYK with matplotlib? >> Hello everybody, >> >> I would be also interested in how to produce CMYK graphics without >> external fiddling. >> >> Cheers, >> Ignas >> >> ------------------------------------------------------------------------------ >> 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_d2d_jan >> _______________________________________________ >> Matplotlib-users mailing list >> Mat...@li... >> 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_d2d_jan > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users >
Hi All, I'm trying to recreate some plots from a old 1970's era report. This is a single plot with an elevation-capacity curve and an elevation-area curve overlaid on top of each other. The plot needs to have a shared y-axis (elevation). The elevation-capacity curve has an x-axis along the bottom that goes left to right. The elevation-area curve has a x-axis with a different scale that goes right to left along the top. I've tried using twiny and reversing the second x axis but that ends up reversing both. Any help would be appreciated. I've attached a low res image of one of the original plots for reference. Thanks, - dharhas
We don't currently have any support -- and we're still struggling in certain areas supporting RGBA consistently across the system. I think this would take someone writing a MEP (as a preliminary study of all of the changes that would be involved) and then shepherding it through implementation. Mike On 01/30/2013 11:10 AM, Ignas Anikevičius wrote: > On 29/01/13 03:37:51 -0800, Dieter wrote: >> I was wondering if anything changed regarding this within the last 2.5 years >> since the last thread. Is there a way to produce CMYK with matplotlib? > Hello everybody, > > I would be also interested in how to produce CMYK graphics without > external fiddling. > > Cheers, > Ignas > > ------------------------------------------------------------------------------ > 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_d2d_jan > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users
On 29/01/13 03:37:51 -0800, Dieter wrote: > I was wondering if anything changed regarding this within the last 2.5 years > since the last thread. Is there a way to produce CMYK with matplotlib? Hello everybody, I would be also interested in how to produce CMYK graphics without external fiddling. Cheers, Ignas
On Tue, Jan 29, 2013 at 5:12 PM, Mads Ipsen <mad...@gm...> wrote: > Hi, > > I spend some time writing up the question below on Stackoverflow which > immediately was closed as a duplicate of other posts. To my best knowledge, > these posts did not answer my questions - so I'll try my luck here instead: > > I am using the qt backengine for setting up a QWidget that embeds a > matplotlib scene. When the widget is closed it appears that many of the > matplotlib objects that were part of the plot still are alive in Python > space. > > My question is basically the following: What actions should I take to > clean up the figure and axes objects etc. that were part of the plot > widget? The qt backend comes with a figure manager, but it appears a little > unclear how it should be used. > > I have attached a small unit test example that sets up a plot. When the > plot appears, just close it, and the test will garbage collects the plot, > and then display info of the matplotlib objects that are still alive in > Python space. Clearly both the path of the plot, and several Bbox objects > are still referenced. > > Our current unit test suite contains almost 10000 GUI tests and its > imperative that proper object space clean up is done after each test. Any > help is much appreciated. > > Best regards, > > Mads > > Would "fig.clf()" do what you need? Ben Root
On Tue, Jan 29, 2013 at 5:55 PM, Maria Liukis <li...@us...> wrote: > Hello, > > I tested the following code on my Mac laptop and our production Linux > server both running matplotlib V1.0.1. Both machines observe the same > output from the code, so I was wondering if somebody is aware of the > problem or if it's some undocumented feature of "pnpoly()" function from > matplotlib.nxutils? > > I use matplotlib.nxutils.pnpoly() function from matplotlib to determine > if point belongs to the polygon. > The following code: > > >>> import numpy as np > >>> import matplotlib.nxutils as nx > >>> coords = np.array([[4.0, 1.0], [4.0, 4.0], [5.0, 5.0], [6.0, 4.0], > [5.0, 0.0]]) > > >>> nx.pnpoly(4.0, 1.0, coords) > 1 > >>> nx.pnpoly(4.0, 4.0, coords) > 1 > >>> nx.pnpoly(5.0, 5.0, coords) > 0 > >>> nx.pnpoly(6.0, 4.0, coords) > 0 > >>> nx.pnpoly(5.0, 0.0, coords) > 0 > > The question is why first two vertexes are considered to be inside of > defined polygon, and last 3 vertexes are not? My guess, it's treating the > polygon as a semi-open set, and I wonder if it can be changed to make all > vertexes inclusive? > > Any help would be greatly appreciated. > > Many thanks, > Masha > The documentation for pnpoly() for that version states: """ A point on the boundary may be treated as inside or outside. See `pnpoly < http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html>`_ """ Note that in version 1.2.0, the nxutils module was deprecated. pnpoly() and points_inside_poly() are now merely wrappers around the polygon's implementations of point-testing, which differs from the nxutils' implementation, so you may get slightly different results. Do note that the point-testing algorithm in matplotlib was more geared for visualization purposes rather than for strict geometric needs. If you need a more well-behaved point-tester (and faster if the polygon is "prepared"), use the shapely package instead. I hope that clears things up! Cheers! Ben Root
On Wed, Jan 30, 2013 at 7:11 AM, Skipper Seabold <jss...@gm...>wrote: > Say I have a marker with a known size in points and I want to draw an > arrow to this point. How can I get the ends points for the arrow? As you > can see in the below, it overlaps the markers. I want to go to the edge. I > can use shrinkA and shrinkB to do what I want, but I don't see how they're > related to the points size**.5. Or should I somehow do the transformation > using the known angle between the two points and the point itself. I don't > know how to translate a point in data coordinates and the offset it in a > certain direction by size**.5 points. Can anyone help clear this up? > Can you elaborate why you cannot just use shrinkA and shrinkB? arrows = FancyArrowPatch(posA=(x1, y1), posB=(x2, y2), color = 'k', arrowstyle="-|>", mutation_scale=700**.5, shrinkA=(700**.5)*.5, shrinkB=(700**.5)*.5, connectionstyle="arc3") What the problem of doing above? Note that the unit of shrinkA and shrinkB is points, and they are independent of mutation_scale, which only affects the size of the arrow. Regards, -JJ
On Tue, Jan 29, 2013 at 5:11 PM, Skipper Seabold <jss...@gm...>wrote: > Say I have a marker with a known size in points and I want to draw an > arrow to this point. How can I get the ends points for the arrow? As you > can see in the below, it overlaps the markers. I want to go to the edge. I > can use shrinkA and shrinkB to do what I want, but I don't see how they're > related to the points size**.5. Or should I somehow do the transformation > using the known angle between the two points and the point itself. I don't > know how to translate a point in data coordinates and the offset it in a > certain direction by size**.5 points. Can anyone help clear this up? > > Skipper > > import matplotlib.pyplot as plt > from matplotlib.patches import FancyArrowPatch > > point1 = (138.21, 19.5) > x1, y1 = point1 > point2 = (67.0, 30.19) > x2, y2 = point2 > size = 700 > > fig, ax = plt.subplots() > ax.scatter(*zip(point1, point2), marker='o', s=size) > > # if I need to get and use the angles > dx = x2 - x1 > dy = y2 - y1 > d = np.sqrt(dx**2 + dy**2) > > arrows = FancyArrowPatch(posA=(x1, y1), posB=(x2, y2), > color = 'k', > arrowstyle="-|>", > mutation_scale=700**.5, > connectionstyle="arc3") > > ax.add_patch(arrows) > > > > > > I went ahead and cross-posted to stackoverflow, if anyone wants to try answer there. Seems to get more traffic than mailing lists these day. http://stackoverflow.com/questions/14594786/fancyarrowpatch-to-edge-of-marker-with-known-size Skipper
Hello, I tested the following code on my Mac laptop and our production Linux server both running matplotlib V1.0.1. Both machines observe the same output from the code, so I was wondering if somebody is aware of the problem or if it's some undocumented feature of "pnpoly()" function from matplotlib.nxutils? I use matplotlib.nxutils.pnpoly() function from matplotlib to determine if point belongs to the polygon. The following code: >>> import numpy as np >>> import matplotlib.nxutils as nx >>> coords = np.array([[4.0, 1.0], [4.0, 4.0], [5.0, 5.0], [6.0, 4.0], [5.0, 0.0]]) >>> nx.pnpoly(4.0, 1.0, coords) 1 >>> nx.pnpoly(4.0, 4.0, coords) 1 >>> nx.pnpoly(5.0, 5.0, coords) 0 >>> nx.pnpoly(6.0, 4.0, coords) 0 >>> nx.pnpoly(5.0, 0.0, coords) 0 The question is why first two vertexes are considered to be inside of defined polygon, and last 3 vertexes are not? My guess, it's treating the polygon as a semi-open set, and I wonder if it can be changed to make all vertexes inclusive? Any help would be greatly appreciated. Many thanks, Masha -------------------- li...@us...
Hi, I spend some time writing up the question below on Stackoverflow which immediately was closed as a duplicate of other posts. To my best knowledge, these posts did not answer my questions - so I'll try my luck here instead: I am using the qt backengine for setting up a QWidget that embeds a matplotlib scene. When the widget is closed it appears that many of the matplotlib objects that were part of the plot still are alive in Python space. My question is basically the following: What actions should I take to clean up the figure and axes objects etc. that were part of the plot widget? The qt backend comes with a figure manager, but it appears a little unclear how it should be used. I have attached a small unit test example that sets up a plot. When the plot appears, just close it, and the test will garbage collects the plot, and then display info of the matplotlib objects that are still alive in Python space. Clearly both the path of the plot, and several Bbox objects are still referenced. Our current unit test suite contains almost 10000 GUI tests and its imperative that proper object space clean up is done after each test. Any help is much appreciated. Best regards, Mads -- +-----------------------------------------------------+ | Mads Ipsen | +----------------------+------------------------------+ | Gåsebæksvej 7, 4. tv | | | DK-2500 Valby | phone: +45-29716388 | | Denmark | email: mad...@gm... | +----------------------+------------------------------+
Say I have a marker with a known size in points and I want to draw an arrow to this point. How can I get the ends points for the arrow? As you can see in the below, it overlaps the markers. I want to go to the edge. I can use shrinkA and shrinkB to do what I want, but I don't see how they're related to the points size**.5. Or should I somehow do the transformation using the known angle between the two points and the point itself. I don't know how to translate a point in data coordinates and the offset it in a certain direction by size**.5 points. Can anyone help clear this up? Skipper import matplotlib.pyplot as plt from matplotlib.patches import FancyArrowPatch point1 = (138.21, 19.5) x1, y1 = point1 point2 = (67.0, 30.19) x2, y2 = point2 size = 700 fig, ax = plt.subplots() ax.scatter(*zip(point1, point2), marker='o', s=size) # if I need to get and use the angles dx = x2 - x1 dy = y2 - y1 d = np.sqrt(dx**2 + dy**2) arrows = FancyArrowPatch(posA=(x1, y1), posB=(x2, y2), color = 'k', arrowstyle="-|>", mutation_scale=700**.5, connectionstyle="arc3") ax.add_patch(arrows)
On Mon, Jan 28, 2013 at 9:41 PM, Boris Vladimir Comi < gl...@co...> wrote: > > #! /usr/bin/python > import numpy as np > data = > np.loadtxt('path-tracks.csv',dtype=np.str,delimiter=',',skiprows=1) > print data > > [['19.70' '-95.20' '2/5/04 6:45 AM' '1' '-38' 'CCM'] > ['19.70' '-94.70' '2/5/04 7:45 AM' '1' '-48' 'CCM'] > ['19.30' '-93.90' '2/5/04 8:45 AM' '1' '-60' 'CCM'] > ['19.00' '-93.50' '2/5/04 9:45 AM' '1' '-58' 'CCM'] > ['19.00' '-92.80' '2/5/04 10:45 AM' '1' '-50' 'CCM'] > ['19.20' '-92.60' '2/5/04 11:45 AM' '1' '-40' 'CCM'] > ['19.90' '-93.00' '2/5/04 12:45 PM' '1' '-43' 'CCM'] > ['20.00' '-92.80' '2/5/04 1:15 PM' '1' '-32' 'CCM'] > ['23.10' '-100.20' '30/5/04 4:45 AM' '2' '-45' 'SCME'] > ['23.20' '-100.00' '30/5/04 5:45 AM' '2' '-56' 'SCME'] > ['23.30' '-100.00' '30/5/04 6:45 AM' '2' '-48' 'SCME'] > ['23.30' '-100.20' '30/5/04 7:45 AM' '2' '-32' 'SCME'] > ['23.40' '-99.00' '31/5/04 3:15 AM' '3' '-36' 'SCM'] > ['23.50' '-98.90' '31/5/04 4:15 AM' '3' '-46' 'SCM'] > ['23.60' '-98.70' '31/5/04 5:15 AM' '3' '-68' 'SCM'] > ['23.70' '-98.80' '31/5/04 6:15 AM' '3' '-30' 'SCM']] > > with the above code I get an array whose columns represent: [Lat, Lon, > Date, Identifier, Temperatures, Category]. Now, I will put a code that > allows me to plot the first and second column on the map of Mexico: > > > > #!/usr/bin/python > #Project Storm: Plot trajectories of convective systems > #import libraries > > import numpy as np > from mpl_toolkits.basemap import Basemap > import matplotlib.pyplot as pl > > # Plot a map for Mexico > > m = Basemap(projection='cyl', llcrnrlat=12, > urcrnrlat=35,llcrnrlon=-120, urcrnrlon=-80, resolution='c', > area_thresh=1000.) > m.bluemarble() > m.drawcoastlines(linewidth=0.5) > m.drawcountries(linewidth=0.5) > m.drawstates(linewidth=0.5) > > #Draw parallels and meridians > > m.drawparallels(np.arange(10.,35.,5.)) > m.drawmeridians(np.arange(-120.,-80.,10.)) > m.drawmapboundary(fill_color='aqua') > > #Open file whit numpy > > data = np.loadtxt('path-tracks.csv', dtype=np.str,delimiter=' , ', > skiprows=1) > latitude = data[:,0] > longitude = data[:,1] > > #Convert latitude and longitude to coordinates X and Y > > x, y = m(longitude, latitude) > > #Plot the points on the map > > pl.plot(x,y,'ro-') > pl.show() > > > > The points plotted on the map, corresponding to three different paths with a > line connecting all points. Mi final idea is to draw a line connecting > the points associated with each path, How I can do this? or How should I > structure my data to plot the different paths? > > is posible draw an identifier or a mark for each path? > > > how I can set the size of the figure so that it can distinguish the > separation between the points? > Boris, I don't have the time to look into this in great detail. However, in general, you can get your current axes and figure objects with the following: ax = pl.gca() fig = pl.gcf() Then you can use the 'annotate' method of 'ax' to call out each path. (See matplotlib,org/examples for help with its use). And then use: fig.set_figwidth(7) # example fig.set_figheight(7) # example ...to make the figure bigger. Finally, use fig.tight_layout() to fill up the newly enlarged figure. Hope that helps, -paul