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

Commit60d3d29

Browse files
authored
Merge pull request#23684 from oscargus/colorbarhatchrectangle
Fix rectangle and hatches for colorbar
2 parents76a5711 +9576ab3 commit60d3d29

File tree

3 files changed

+42
-5
lines changed

3 files changed

+42
-5
lines changed

‎lib/matplotlib/colorbar.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -606,10 +606,13 @@ def _update_dividers(self):
606606
self.dividers.set_segments(segments)
607607

608608
def_add_solids_patches(self,X,Y,C,mappable):
609-
hatches=mappable.hatches*len(C)# Have enough hatches.
609+
hatches=mappable.hatches* (len(C)+1)# Have enough hatches.
610+
ifself._extend_lower():
611+
# remove first hatch that goes into the extend patch
612+
hatches=hatches[1:]
610613
patches= []
611614
foriinrange(len(X)-1):
612-
xy=np.array([[X[i,0],Y[i,0]],
615+
xy=np.array([[X[i,0],Y[i,1]],
613616
[X[i,1],Y[i,0]],
614617
[X[i+1,1],Y[i+1,0]],
615618
[X[i+1,0],Y[i+1,1]]])
@@ -661,9 +664,9 @@ def _do_extends(self, ax=None):
661664
mappable=getattr(self,'mappable',None)
662665
if (isinstance(mappable,contour.ContourSet)
663666
andany(hatchisnotNoneforhatchinmappable.hatches)):
664-
hatches=mappable.hatches
667+
hatches=mappable.hatches* (len(self._y)+1)
665668
else:
666-
hatches= [None]
669+
hatches= [None]* (len(self._y)+1)
667670

668671
ifself._extend_lower():
669672
ifnotself.extendrect:
@@ -687,6 +690,8 @@ def _do_extends(self, ax=None):
687690
zorder=np.nextafter(self.ax.patch.zorder,-np.inf))
688691
self.ax.add_patch(patch)
689692
self._extend_patches.append(patch)
693+
# remove first hatch that goes into the extend patch
694+
hatches=hatches[1:]
690695
ifself._extend_upper():
691696
ifnotself.extendrect:
692697
# triangle
@@ -699,10 +704,12 @@ def _do_extends(self, ax=None):
699704
# add the patch
700705
val=0ifself._long_axis().get_inverted()else-1
701706
color=self.cmap(self.norm(self._values[val]))
707+
hatch_idx=len(self._y)-1
702708
patch=mpatches.PathPatch(
703709
mpath.Path(xy),facecolor=color,alpha=self.alpha,
704710
linewidth=0,antialiased=False,
705-
transform=self.ax.transAxes,hatch=hatches[-1],clip_on=False,
711+
transform=self.ax.transAxes,hatch=hatches[hatch_idx],
712+
clip_on=False,
706713
# Place it right behind the standard patches, which is
707714
# needed if we updated the extends
708715
zorder=np.nextafter(self.ax.patch.zorder,-np.inf))

‎lib/matplotlib/tests/test_colorbar.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -998,6 +998,36 @@ def test_colorbar_extend_drawedges():
998998
np.testing.assert_array_equal(cbar.dividers.get_segments(),res)
999999

10001000

1001+
@image_comparison(['contourf_extend_patches.png'],remove_text=True,
1002+
style='mpl20')
1003+
deftest_colorbar_contourf_extend_patches():
1004+
params= [
1005+
('both',5, ['\\','//']),
1006+
('min',7, ['+']),
1007+
('max',2, ['|','-','/','\\','//']),
1008+
('neither',10, ['//','\\','||']),
1009+
]
1010+
1011+
plt.rcParams['axes.linewidth']=2
1012+
1013+
fig=plt.figure(figsize=(10,4))
1014+
subfigs=fig.subfigures(1,2)
1015+
fig.subplots_adjust(left=0.05,bottom=0.05,right=0.95,top=0.95)
1016+
1017+
x=np.linspace(-2,3,50)
1018+
y=np.linspace(-2,3,30)
1019+
z=np.cos(x[np.newaxis, :])+np.sin(y[:,np.newaxis])
1020+
1021+
cmap=mpl.colormaps["viridis"]
1022+
fororientation,subfiginzip(['horizontal','vertical'],subfigs):
1023+
axs=subfig.subplots(2,2).ravel()
1024+
forax, (extend,levels,hatches)inzip(axs,params):
1025+
cs=ax.contourf(x,y,z,levels,hatches=hatches,
1026+
cmap=cmap,extend=extend)
1027+
subfig.colorbar(cs,ax=ax,orientation=orientation,fraction=0.4,
1028+
extendfrac=0.2,aspect=5)
1029+
1030+
10011031
deftest_negative_boundarynorm():
10021032
fig,ax=plt.subplots(figsize=(1,3))
10031033
cmap=mpl.colormaps["viridis"]

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp