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

Commita3e04d9

Browse files
committed
Major reworking; mapping has priority.
1 parenta257f7c commita3e04d9

File tree

3 files changed

+60
-55
lines changed

3 files changed

+60
-55
lines changed

‎lib/matplotlib/axes/_axes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6112,7 +6112,7 @@ def pcolormesh(self, *args, alpha=None, norm=None, cmap=None, vmin=None,
61126112
ifshadingisNone:
61136113
shading=rcParams['pcolor.shading']
61146114
shading=shading.lower()
6115-
kwargs.setdefault('edgecolors','None')
6115+
kwargs.setdefault('edgecolors','none')
61166116

61176117
X,Y,C,shading=self._pcolorargs('pcolormesh',*args,
61186118
shading=shading,kwargs=kwargs)

‎lib/matplotlib/collections.py

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ def __init__(self,
171171
self._us_lw= [0]
172172
self._linewidths= [0]
173173
# Flags: do colors come from mapping an array?
174-
self._face_is_mapped=True
175-
self._edge_is_mapped=False
174+
self._face_is_mapped=None
175+
self._edge_is_mapped=None
176176
self._mapped_colors=None# Calculated in update_scalarmappable
177177
self._hatch_color=mcolors.to_rgba(mpl.rcParams['hatch.color'])
178178
self.set_facecolor(facecolors)
@@ -802,7 +802,9 @@ def _get_default_edgecolor(self):
802802
def_set_edgecolor(self,c):
803803
set_hatch_color=True
804804
ifcisNone:
805-
ifmpl.rcParams['patch.force_edgecolor']orself._edge_default:
805+
if (mpl.rcParams['patch.force_edgecolor']
806+
orself._edge_default
807+
orcbook._str_equal(self._original_facecolor,'none')):
806808
c=self._get_default_edgecolor()
807809
else:
808810
c='none'
@@ -873,39 +875,20 @@ def _set_mappable_flags(self):
873875
"""
874876
edge0=self._edge_is_mapped
875877
face0=self._face_is_mapped
876-
ifself._AisNone:
877-
self._edge_is_mapped=False
878-
self._face_is_mapped=False
879-
else:
880-
# Typical mapping: faces, not edges.
881-
self._face_is_mapped=True
882-
self._edge_is_mapped=False
883-
884-
# Prepare color strings to check for special cases.
885-
fc=self._original_facecolor
886-
iffcisNone:
887-
fc=self._get_default_facecolor()
888-
ifnotisinstance(fc,str):
889-
fc='array'
890-
ec=self._original_edgecolor
891-
ifecisNone:
892-
ifmpl.rcParams['patch.force_edgecolor']orself._edge_default:
893-
ec=self._get_default_edgecolor()
894-
else:
895-
ec='none'
896-
ifnotisinstance(ec,str):
897-
ec='array'
898-
899-
# Handle special cases.
900-
iffc=='none':
901-
self._face_is_mapped=False
902-
self._edge_is_mapped=True
903-
elifec=='face':
904-
self._edge_is_mapped=True
878+
self._edge_is_mapped=False
879+
self._face_is_mapped=False
880+
ifself._AisnotNone:
881+
ifnotcbook._str_equal(self._original_facecolor,'none'):
905882
self._face_is_mapped=True
883+
ifcbook._str_equal(self._original_edgecolor,'face'):
884+
self._edge_is_mapped=True
885+
else:
886+
ifself._original_edgecolorisNone:
887+
self._edge_is_mapped=True
906888

907889
mapped=self._face_is_mappedorself._edge_is_mapped
908-
changed= (self._edge_is_mapped!=edge0
890+
changed= (edge0isNoneorface0isNone
891+
orself._edge_is_mapped!=edge0
909892
orself._face_is_mapped!=face0)
910893
returnmappedorchanged
911894

@@ -1465,6 +1448,7 @@ def __init__(self, segments, # Can be None.
14651448
"arguments is deprecated, and they will become keyword-only "
14661449
"arguments %(removal)s."
14671450
)
1451+
kwargs.setdefault('facecolors','none')
14681452
super().__init__(
14691453
zorder=zorder,
14701454
**kwargs)

‎lib/matplotlib/tests/test_collections.py

Lines changed: 42 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -752,49 +752,70 @@ def test_legend_inverse_size_label_relationship():
752752
@pytest.mark.style('default')
753753
@pytest.mark.parametrize('pcfunc', [plt.pcolor,plt.pcolormesh])
754754
deftest_color_logic(pcfunc):
755-
rgba_none=mcolors.to_rgba_array('none')
756755
z=np.arange(12).reshape(3,4)
756+
# Explicitly set an edgecolor.
757757
pc=pcfunc(z,edgecolors='red',facecolors='none')
758+
pc.update_scalarmappable()# This is called in draw().
759+
# Define 2 reference "colors" here for multiple use.
758760
face_default=mcolors.to_rgba_array(pc._get_default_facecolor())
759-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,1]])
761+
mapped=pc.get_cmap()(pc.norm((z.ravel())))
762+
# Github issue #1302:
763+
assertmcolors.same_color(pc.get_edgecolor(),'red')
760764
# Check setting attributes after initialization:
761765
pc=pcfunc(z)
762766
pc.set_facecolor('none')
763767
pc.set_edgecolor('red')
764-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,1]])
768+
pc.update_scalarmappable()
769+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
765770
pc.set_alpha(0.5)
766-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,0.5]])
767-
pc.set_edgecolor(None)# reset to default
771+
pc.update_scalarmappable()
772+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,0.5]])
768773
pc.set_alpha(None)# restore default alpha
769774
pc.update_scalarmappable()
770-
assertpc.get_edgecolor().shape== (12,4)# color-mapped
771-
pc.set_facecolor(None)
775+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
776+
# Reset edgecolor to default.
777+
pc.set_edgecolor(None)
778+
pc.update_scalarmappable()
779+
assertmcolors.same_color(pc.get_edgecolor(),mapped)
780+
pc.set_facecolor(None)# restore default for facecolor
772781
pc.update_scalarmappable()
773-
assertpc.get_facecolor().shape== (12,4)# color-mapped
774-
assert_array_equal(pc.get_edgecolor(),rgba_none)# default:'none'
782+
assertmcolors.same_color(pc.get_facecolor(),mapped)
783+
assertmcolors.same_color(pc.get_edgecolor(),'none')
775784
# Turn off colormapping entirely:
776785
pc.set_array(None)
777786
pc.update_scalarmappable()
778-
assert_array_equal(pc.get_edgecolor(),rgba_none)
779-
assertpc.get_facecolor().shape== (1,4)# no longer color-mapped
780-
assert_array_equal(pc.get_facecolor(),face_default)
787+
assertmcolors.same_color(pc.get_edgecolor(),'none')
788+
assertmcolors.same_color(pc.get_facecolor(),face_default)# not mapped
781789
# Turn it back on by restoring the array (must be 1D!):
782790
pc.set_array(z.ravel())
783791
pc.update_scalarmappable()
784-
assertpc.get_facecolor().shape== (12,4)# color-mapped
785-
assert_array_equal(pc.get_edgecolor(),rgba_none)
792+
assertmcolors.same_color(pc.get_facecolor(),mapped)
793+
assertmcolors.same_color(pc.get_edgecolor(),'none')
786794
# Give color via tuple rather than string.
787795
pc=pcfunc(z,edgecolors=(1,0,0),facecolors=(0,1,0))
788-
assert_array_equal(pc.get_facecolor(), [[0,1,0,1]])
789-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,1]])
790-
# Provide an RGB array.
796+
pc.update_scalarmappable()
797+
assertmcolors.same_color(pc.get_facecolor(),mapped)
798+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
799+
# Provide an RGB array; mapping overrides it.
791800
pc=pcfunc(z,edgecolors=(1,0,0),facecolors=np.ones((12,3)))
792-
assert_array_equal(pc.get_facecolor(),np.ones((12,4)))
793-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,1]])
801+
pc.update_scalarmappable()
802+
assertmcolors.same_color(pc.get_facecolor(),mapped)
803+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
804+
# Turn off the mapping.
805+
pc.set_array(None)
806+
pc.update_scalarmappable()
807+
assertmcolors.same_color(pc.get_facecolor(),np.ones((12,3)))
808+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
794809
# And an RGBA array.
795810
pc=pcfunc(z,edgecolors=(1,0,0),facecolors=np.ones((12,4)))
796-
assert_array_equal(pc.get_facecolor(),np.ones((12,4)))
797-
assert_array_equal(pc.get_edgecolor(), [[1,0,0,1]])
811+
pc.update_scalarmappable()
812+
assertmcolors.same_color(pc.get_facecolor(),mapped)
813+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
814+
# Turn off the mapping.
815+
pc.set_array(None)
816+
pc.update_scalarmappable()
817+
assertmcolors.same_color(pc.get_facecolor(),np.ones((12,4)))
818+
assertmcolors.same_color(pc.get_edgecolor(), [[1,0,0,1]])
798819

799820

800821
deftest_LineCollection_args():

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp