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






Showing 7 results of 7

From: Steven B. <bo...@ph...> - 2013年03月21日 21:15:29
Heya List,
See attached image for what I mean.
Here is the grid creation bit. I can't seem to figure out what might be 
causing such a problem.
 F = pyl.figure(1,(5.5,3.5))
 grid = AxesGrid(F, 111,
 nrows_ncols=(1,3),
 axes_pad = 0.1,
 add_all=True,
 label_mode = 'L',
 aspect=True)
Should be simple enough right?
-- 
Steven Boada
Doctoral Student
Dept of Physics and Astronomy
Texas A&M University
bo...@ph...
From: Mark L. <bre...@ya...> - 2013年03月21日 03:45:58
On 19/03/2013 18:35, Paul Hobson wrote:
> On Tue, Mar 19, 2013 at 11:30 AM, Paul Hobson <pmh...@gm...
> <mailto:pmh...@gm...>> wrote:
>
> On Mon, Mar 18, 2013 at 8:34 PM, Mark Lawrence
> <bre...@ya...
> <mailto:bre...@ya...>> wrote:
>
> Matplotlib 1.2.0, Windows Vista, Python 3.3.0. I want the first
> major
> xtick label aligned with the first date that's plotted. This never
> happens with the value of day below set in the range zero to
> six. The
> first major tick label actually occurs as follows.
>
> Day Label date
> 0 25/03/2013
> 1 02/04/2013
> 2 10/04/2013
> 3 21/03/2013
> 4 29/03/2013
> 5 06/04/2013
> 6 17/03/2013
>
> What am I doing wrong?
>
> If day is set to seven then no xticks are displayed but labels for
> 14/03/2013 and 13/03/2014 are displayed. I expected a ValueError or
> similar using this number. Could you explain this behaviour please?
>
> import matplotlib.pyplot as plt
> from matplotlib.ticker import FormatStrFormatter, MultipleLocator
> from matplotlib.dates import DateFormatter, WeekdayLocator
> import datetime
>
> dates = [datetime.date(2013, 3, 14), datetime.date(2014, 3, 13)]
> values = [0, 1]
> plt.ylabel('Balance')
> plt.grid()
> ax = plt.subplot(111)
> plt.plot_date(dates, values, fmt = 'rx-')
> plt.axis(xmin=dates[0], xmax=dates[-1])
> day = ?
> ax.xaxis.set_major_locator(WeekdayLocator(byweekday=day,
> interval=4))
> ax.xaxis.set_minor_locator(WeekdayLocator(byweekday=day))
> ax.xaxis.set_major_formatter(DateFormatter('%d/%m/%y'))
> ax.yaxis.set_major_formatter(FormatStrFormatter('£%0.2f'))
> ax.yaxis.set_minor_locator(MultipleLocator(5))
> plt.setp(plt.gca().get_xticklabels(), rotation = 45, fontsize = 10)
> plt.setp(plt.gca().get_yticklabels(), fontsize = 10)
> plt.show()
>
>
> Mark,
>
> I've found that rotation_mode='anchor' works best when rotation != 0
>
> So that makes it:
> plt.setp(plt.gca().get_xticklabels(), rotation = 45, fontsize = 10,
> rotation_mode='anchor' )
>
> HTH,
> -paul
>
>
>
> I misread your question. Try setting your x-axis limits after defining
> the locators and formatters.
> -p
>
>
Please accept my apologies for the delay in replying, plus I should also 
have mentioned originally that I've only encountered this problem with 
WeekdayLocator.
Setting the x-axis limits after defining the locators and formatters 
makes no difference.
I've resolved my issue by reverting back to using MonthLocator, which I 
originally disliked as the minor tick locations made the display look 
poor around that darned month of February. My solution has been to 
ignore all rrule type computing and use the following code.
xticks = ax.get_xticks()
minorTicks = []
for i,xt in enumerate(xticks, start=1):
 try:
 diff = (xticks[i] - xt) / 4
 for i in range(1, 4):
 minorTicks.append(xt + i * diff)
 except IndexError:
 pass
ax.set_xticks(minorTicks, minor=True)
It works a treat, but if there's a simpler solution please let me know :)
-- 
Cheers.
Mark Lawrence
From: Jonathan S. <js...@cf...> - 2013年03月21日 03:25:06
Hmm. It seems that the adjustable='box-forced' option to set_aspect
does work. I don't know what went wrong the first time I tried it
(probably a typo). So that solves my problem. Thanks Eric.
It does seem to me that this should be the default behavior, though I
can appreciate the difficulty with panning and zooming.
Jon
On Wed, 2013年03月20日 at 18:16 -0700, Brendan Barnwell wrote:
> 
> On 2013年03月20日 14:25, Eric Firing wrote:
> > > On 2013年03月20日 8:57 AM, Jonathan Slavin wrote:
> >> >> Hi all,
> >> >>
> >> >> I've run across a minor but annoying bug. It can be 
> demonstrated pretty
> >> >> simply:
> >> >>
> >> >> fig, ax = plt.subplots(2,1,sharex=True,figsize=(7.,7.))
> >> >> fig.subplots_adjust(hspace=0.0)
> >> >> x = 4.25*(np.arange(6.) - 2.5)/10.
> >> >> y = 0.6*x/max(x)
> >> >> ax[0].plot(x,y)
> >> >> ax[0].set_xlim(-1.2,1.2)
> >> >> ax[0].set_aspect('equal')
> >> >> ax[1].plot(x,y)
> >> >> ax[0].set_ylim(-0.6,0.6)
> >> >> ax[1].set_ylim(-0.6,0.6)
> >> >> ax[1].set_aspect('equal')
> >> >> plt.show()
> >> >>
> >> >> The problem is that the y limits on the two plots are slightly 
> different
> >> >> from those set:
> > >
> > > I think the problem is that you are trying to specify too many 
> things:
> > > you are specifying the box dimensions when you make the axes, 
> then you
> > > are specifying xlim, and then you are specifying ylim, but then 
> you are
> > > asking for a 1:1 aspect ratio. Something has to give! The 
> aspect ratio
> > > handling is designed to provide the specified aspect ratio under 
> a wide
> > > range of circumstances, including zooming and panning, and to do 
> that,
> > > it has to be able to change something. You can choose to let the box
> > > dimensions be changeable, or the data limits.
> 
> 	If I understand right, though, in this case what should give is the
> spacing around the axes but inside the figure (as suggested in the
> original post). You should be able to fix the aspect ratio of the
> *axes* and also the dimensions of the *figure*, and let the slack be
> taken up by blank space around the axes. It would still be possible
> for the dimensions of the axes box to change, just not their aspect
> ratio (i.e., zooming in on an oblong region would just result in a lot
> of blank space).
> 
> -- Brendan Barnwell "Do not follow where the path may lead. Go, 
> instead, where there is no path, and leave a trail." --author unknown
> 
> 
> 
-- 
______________________________________________________________
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
______________________________________________________________
From: Jonathan S. <js...@cf...> - 2013年03月21日 03:06:05
Eric,
I don't see it that way. Specifying an equal aspect ratio just means
that I want the scaling of the axes to the same. Then specifying the
data limits gives the overall scaling of the figure effectively. This
works perfectly well for a single set of axes. The bounding space is
allotted so that it all works. The problem only arises when I have the
figures stacked. Then it seems that the bounding space becomes fixed
for some reason and instead the axis limits are "what gives" instead of
the space around the axes.
By the way, the adjustable='box-forced' option to set_aspect generates
an exception, 
ValueError: adjustable must be "datalim" for shared axes
Jon
On Wed, 2013年03月20日 at 11:25 -1000, Eric Firing wrote:
> On 2013年03月20日 8:57 AM, Jonathan Slavin wrote:
> > Hi all,
> >
> > I've run across a minor but annoying bug. It can be demonstrated pretty
> > simply:
> >
> > fig, ax = plt.subplots(2,1,sharex=True,figsize=(7.,7.))
> > fig.subplots_adjust(hspace=0.0)
> > x = 4.25*(np.arange(6.) - 2.5)/10.
> > y = 0.6*x/max(x)
> > ax[0].plot(x,y)
> > ax[0].set_xlim(-1.2,1.2)
> > ax[0].set_aspect('equal')
> > ax[1].plot(x,y)
> > ax[0].set_ylim(-0.6,0.6)
> > ax[1].set_ylim(-0.6,0.6)
> > ax[1].set_aspect('equal')
> > plt.show()
> >
> > The problem is that the y limits on the two plots are slightly different
> > from those set:
> 
> I think the problem is that you are trying to specify too many things: 
> you are specifying the box dimensions when you make the axes, then you 
> are specifying xlim, and then you are specifying ylim, but then you are 
> asking for a 1:1 aspect ratio. Something has to give! The aspect ratio 
> handling is designed to provide the specified aspect ratio under a wide 
> range of circumstances, including zooming and panning, and to do that, 
> it has to be able to change something. You can choose to let the box 
> dimensions be changeable, or the data limits.
> 
> If you want to fix the data limits, then you have to make the box 
> adjustable. This can cause problems with shared axes, but you can try 
> it with ax[0].set_aspect('equal', adjustable='box-forced').
> 
> Eric
> 
> > ax[1].get_ylim()
> > (-0.61935483870967734, 0.61935483870967734)
> > and doing a set_ylim doesn't have any effect. This seems to be caused
> > by the set_aspect('equal'), since removing it results in plots with the
> > correct limits -- but aspect that is not quite equal. It is affected by
> > the figsize parameter in the call to subplots. It seems I can get the
> > correct y limits and aspect if I keep the set_aspect('equal') and fiddle
> > with the figsize. But that certainly doesn't seem to be a desirable
> > behavior. Ideally, the set_ylim (or set_xlim) would be respected as
> > well as the apect ratio and extra blank space around the figure would be
> > added as needed to fit the figsize.
> >
> > By the way, using no figsize argument to subplots results in y limits
> > even smaller than the data limits. Also, this problem does not occur
> > for single (non-stacked) plots and the use of subplots_adjust also does
> > not seem to affect the problem. I'm using matplotlib 1.2.0
> >
> > I did notice that this issue is similar to that discussed in this
> > thread:
> > http://www.mail-archive.com/mat...@li.../msg05783.html
> >
> > Regards,
> > Jon
> >
> 
> 
> 
-- 
______________________________________________________________
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 2013年03月20日 3:16 PM, Brendan Barnwell wrote:
> On 2013年03月20日 14:25, Eric Firing wrote:
>> On 2013年03月20日 8:57 AM, Jonathan Slavin wrote:
>>> Hi all,
>>>
>>> I've run across a minor but annoying bug. It can be demonstrated pretty
>>> simply:
>>>
>>> fig, ax = plt.subplots(2,1,sharex=True,figsize=(7.,7.))
>>> fig.subplots_adjust(hspace=0.0)
>>> x = 4.25*(np.arange(6.) - 2.5)/10.
>>> y = 0.6*x/max(x)
>>> ax[0].plot(x,y)
>>> ax[0].set_xlim(-1.2,1.2)
>>> ax[0].set_aspect('equal')
>>> ax[1].plot(x,y)
>>> ax[0].set_ylim(-0.6,0.6)
>>> ax[1].set_ylim(-0.6,0.6)
>>> ax[1].set_aspect('equal')
>>> plt.show()
>>>
>>> The problem is that the y limits on the two plots are slightly different
>>> from those set:
>>
>> I think the problem is that you are trying to specify too many things:
>> you are specifying the box dimensions when you make the axes, then you
>> are specifying xlim, and then you are specifying ylim, but then you are
>> asking for a 1:1 aspect ratio. Something has to give! The aspect ratio
>> handling is designed to provide the specified aspect ratio under a wide
>> range of circumstances, including zooming and panning, and to do that,
>> it has to be able to change something. You can choose to let the box
>> dimensions be changeable, or the data limits.
>
> If I understand right, though, in this case what should give is the
> spacing around the axes but inside the figure (as suggested in the
> original post). You should be able to fix the aspect ratio of the
> *axes* and also the dimensions of the *figure*, and let the slack be
> taken up by blank space around the axes. It would still be possible for
> the dimensions of the axes box to change, just not their aspect ratio
> (i.e., zooming in on an oblong region would just result in a lot of
> blank space).
>
That is exactly what I suggested--use the kwarg adjustable='box-forced' 
when axes are shared. I think this will not work quite right for 
zooming and panning, which is the reason the normal adjustable='box' is 
rejected when axes are shared.
Eric
From: Brendan B. <bre...@br...> - 2013年03月21日 01:16:49
On 2013年03月20日 14:25, Eric Firing wrote:
 > > On 2013年03月20日 8:57 AM, Jonathan Slavin wrote:
 >> >> Hi all,
 >> >>
 >> >> I've run across a minor but annoying bug. It can be 
demonstrated pretty
 >> >> simply:
 >> >>
 >> >> fig, ax = plt.subplots(2,1,sharex=True,figsize=(7.,7.))
 >> >> fig.subplots_adjust(hspace=0.0)
 >> >> x = 4.25*(np.arange(6.) - 2.5)/10.
 >> >> y = 0.6*x/max(x)
 >> >> ax[0].plot(x,y)
 >> >> ax[0].set_xlim(-1.2,1.2)
 >> >> ax[0].set_aspect('equal')
 >> >> ax[1].plot(x,y)
 >> >> ax[0].set_ylim(-0.6,0.6)
 >> >> ax[1].set_ylim(-0.6,0.6)
 >> >> ax[1].set_aspect('equal')
 >> >> plt.show()
 >> >>
 >> >> The problem is that the y limits on the two plots are slightly 
different
 >> >> from those set:
 > >
 > > I think the problem is that you are trying to specify too many 
things:
 > > you are specifying the box dimensions when you make the axes, 
then you
 > > are specifying xlim, and then you are specifying ylim, but then 
you are
 > > asking for a 1:1 aspect ratio. Something has to give! The 
aspect ratio
 > > handling is designed to provide the specified aspect ratio under 
a wide
 > > range of circumstances, including zooming and panning, and to do 
that,
 > > it has to be able to change something. You can choose to let the box
 > > dimensions be changeable, or the data limits.
	If I understand right, though, in this case what should give is the
spacing around the axes but inside the figure (as suggested in the
original post). You should be able to fix the aspect ratio of the
*axes* and also the dimensions of the *figure*, and let the slack be
taken up by blank space around the axes. It would still be possible
for the dimensions of the axes box to change, just not their aspect
ratio (i.e., zooming in on an oblong region would just result in a lot
of blank space).
-- Brendan Barnwell "Do not follow where the path may lead. Go, 
instead, where there is no path, and leave a trail." --author unknown
From: Brendan B. <bre...@br...> - 2013年03月21日 01:16:27
On 2013年03月20日 14:25, Eric Firing wrote:
> On 2013年03月20日 8:57 AM, Jonathan Slavin wrote:
>> Hi all,
>>
>> I've run across a minor but annoying bug. It can be demonstrated pretty
>> simply:
>>
>> fig, ax = plt.subplots(2,1,sharex=True,figsize=(7.,7.))
>> fig.subplots_adjust(hspace=0.0)
>> x = 4.25*(np.arange(6.) - 2.5)/10.
>> y = 0.6*x/max(x)
>> ax[0].plot(x,y)
>> ax[0].set_xlim(-1.2,1.2)
>> ax[0].set_aspect('equal')
>> ax[1].plot(x,y)
>> ax[0].set_ylim(-0.6,0.6)
>> ax[1].set_ylim(-0.6,0.6)
>> ax[1].set_aspect('equal')
>> plt.show()
>>
>> The problem is that the y limits on the two plots are slightly different
>> from those set:
>
> I think the problem is that you are trying to specify too many things:
> you are specifying the box dimensions when you make the axes, then you
> are specifying xlim, and then you are specifying ylim, but then you are
> asking for a 1:1 aspect ratio. Something has to give! The aspect ratio
> handling is designed to provide the specified aspect ratio under a wide
> range of circumstances, including zooming and panning, and to do that,
> it has to be able to change something. You can choose to let the box
> dimensions be changeable, or the data limits.
	If I understand right, though, in this case what should give is the 
spacing around the axes but inside the figure (as suggested in the 
original post). You should be able to fix the aspect ratio of the 
*axes* and also the dimensions of the *figure*, and let the slack be 
taken up by blank space around the axes. It would still be possible 
for the dimensions of the axes box to change, just not their aspect 
ratio (i.e., zooming in on an oblong region would just result in a lot 
of blank space).
-- 
Brendan Barnwell
"Do not follow where the path may lead. Go, instead, where there is 
no path, and leave a trail."
 --author unknown

Showing 7 results of 7

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 によって変換されたページ (->オリジナル) /