Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit001ea25

Browse files
authored
Merge pull request#6584 from efiring/min_num_ticks2
FIX: try to ensure 2 ticks with AutoLocator.
2 parentsb55563e +f810e0d commit001ea25

File tree

1 file changed

+35
-13
lines changed

1 file changed

+35
-13
lines changed

‎lib/matplotlib/ticker.py

Lines changed: 35 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1476,7 +1476,8 @@ class MaxNLocator(Locator):
14761476
steps=None,
14771477
integer=False,
14781478
symmetric=False,
1479-
prune=None)
1479+
prune=None,
1480+
min_n_ticks=2)
14801481

14811482
def__init__(self,*args,**kwargs):
14821483
"""
@@ -1508,6 +1509,11 @@ def __init__(self, *args, **kwargs):
15081509
removed. If prune=='both', the largest and smallest ticks
15091510
will be removed. If prune==None, no ticks will be removed.
15101511
1512+
*min_n_ticks*
1513+
While the estimated number of ticks is less than the minimum,
1514+
the target value *nbins* is incremented and the ticks are
1515+
recalculated.
1516+
15111517
"""
15121518
ifargs:
15131519
kwargs['nbins']=args[0]
@@ -1550,11 +1556,27 @@ def set_params(self, **kwargs):
15501556
self._integer=kwargs['integer']
15511557
ifself._integer:
15521558
self._steps= [nforninself._stepsif_divmod(n,1)[1]<0.001]
1559+
if'min_n_ticks'inkwargs:
1560+
self._min_n_ticks=max(1,kwargs['min_n_ticks'])
15531561

15541562
def_raw_ticks(self,vmin,vmax):
1555-
nbins=self._nbins
1556-
ifnbins=='auto':
1557-
nbins=max(min(self.axis.get_tick_space(),9),1)
1563+
ifself._nbins=='auto':
1564+
nbins=max(min(self.axis.get_tick_space(),9),
1565+
max(1,self._min_n_ticks-1))
1566+
else:
1567+
nbins=self._nbins
1568+
1569+
whileTrue:
1570+
ticks=self._try_raw_ticks(vmin,vmax,nbins)
1571+
nticks= ((ticks<=vmax)& (ticks>=vmin)).sum()
1572+
ifnticks>=self._min_n_ticks:
1573+
break
1574+
nbins+=1
1575+
1576+
self._nbins_used=nbins# Maybe useful for troubleshooting.
1577+
returnticks
1578+
1579+
def_try_raw_ticks(self,vmin,vmax,nbins):
15581580
scale,offset=scale_range(vmin,vmax,nbins)
15591581
ifself._integer:
15601582
scale=max(1,scale)
@@ -1565,9 +1587,8 @@ def _raw_ticks(self, vmin, vmax):
15651587
best_vmax=vmax
15661588
best_vmin=vmin
15671589

1568-
forstepinself._steps:
1569-
ifstep<scaled_raw_step:
1570-
continue
1590+
steps= (xforxinself._stepsifx>=scaled_raw_step)
1591+
forstepinsteps:
15711592
step*=scale
15721593
best_vmin=vmin//step*step
15731594
best_vmax=best_vmin+step*nbins
@@ -1603,11 +1624,10 @@ def tick_values(self, vmin, vmax):
16031624
returnself.raise_if_exceeds(locs)
16041625

16051626
defview_limits(self,dmin,dmax):
1606-
ifrcParams['axes.autolimit_mode']=='round_numbers':
1607-
ifself._symmetric:
1608-
maxabs=max(abs(dmin),abs(dmax))
1609-
dmin=-maxabs
1610-
dmax=maxabs
1627+
ifself._symmetric:
1628+
maxabs=max(abs(dmin),abs(dmax))
1629+
dmin=-maxabs
1630+
dmax=maxabs
16111631

16121632
dmin,dmax=mtransforms.nonsingular(
16131633
dmin,dmax,expander=1e-12,tiny=1e-13)
@@ -2053,9 +2073,11 @@ class AutoLocator(MaxNLocator):
20532073
def__init__(self):
20542074
ifrcParams['_internal.classic_mode']:
20552075
nbins=9
2076+
steps= [1,2,5,10]
20562077
else:
20572078
nbins='auto'
2058-
MaxNLocator.__init__(self,nbins=nbins,steps=[1,2,5,10])
2079+
steps= [1,2,2.5,5,10]
2080+
MaxNLocator.__init__(self,nbins=nbins,steps=steps)
20592081

20602082

20612083
classAutoMinorLocator(Locator):

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp