Skip to content

Commit 80db49a

Browse files
committed
Added missing mapbox and polar subplot id support (See #1050)
1 parent 78a4434 commit 80db49a

File tree

2 files changed

+39
-7
lines changed

2 files changed

+39
-7
lines changed

Diff for: plotly/basedatatypes.py

+14-4
Original file line numberDiff line numberDiff line change
@@ -3336,7 +3336,14 @@ class BaseLayoutType(BaseLayoutHierarchyType):
33363336
# generated properties/validators as needed for xaxis2, yaxis3, etc.
33373337

33383338
# # ### Create subplot property regular expression ###
3339-
_subplotid_prop_names = ['xaxis', 'yaxis', 'geo', 'ternary', 'scene']
3339+
_subplotid_prop_names = ['xaxis',
3340+
'yaxis',
3341+
'geo',
3342+
'ternary',
3343+
'scene',
3344+
'mapbox',
3345+
'polar']
3346+
33403347
_subplotid_prop_re = re.compile(
33413348
'(' + '|'.join(_subplotid_prop_names) + ')(\d+)')
33423349

@@ -3350,15 +3357,18 @@ def _subplotid_validators(self):
33503357
dict
33513358
"""
33523359
from .validators.layout import (XAxisValidator, YAxisValidator,
3353-
GeoValidator, TernaryValidator,
3354-
SceneValidator)
3360+
GeoValidator, TernaryValidator,
3361+
SceneValidator, MapboxValidator,
3362+
PolarValidator)
33553363

33563364
return {
33573365
'xaxis': XAxisValidator,
33583366
'yaxis': YAxisValidator,
33593367
'geo': GeoValidator,
33603368
'ternary': TernaryValidator,
3361-
'scene': SceneValidator
3369+
'scene': SceneValidator,
3370+
'mapbox': MapboxValidator,
3371+
'polar': PolarValidator
33623372
}
33633373

33643374
def __init__(self, plotly_name, **kwargs):

Diff for: plotly/tests/test_core/test_graph_objs/test_layout_subplots.py

+25-3
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,17 @@ def test_initial_access_subplots(self):
1616
self.assertEqual(self.layout.yaxis, go.layout.YAxis())
1717
self.assertEqual(self.layout['geo'], go.layout.Geo())
1818
self.assertEqual(self.layout.scene, go.layout.Scene())
19+
self.assertEqual(self.layout.mapbox, go.layout.Mapbox())
20+
self.assertEqual(self.layout.polar, go.layout.Polar())
1921

2022
# Subplot ids of 1 should be mapped to the same object as the base
2123
# subplot. Notice we're using assertIs not assertEqual here
2224
self.assertIs(self.layout.xaxis, self.layout.xaxis1)
2325
self.assertIs(self.layout.yaxis, self.layout.yaxis1)
2426
self.assertIs(self.layout.geo, self.layout.geo1)
2527
self.assertIs(self.layout.scene, self.layout.scene1)
28+
self.assertIs(self.layout.mapbox, self.layout.mapbox1)
29+
self.assertIs(self.layout.polar, self.layout.polar1)
2630

2731
@raises(AttributeError)
2832
def test_initial_access_subplot2(self):
@@ -137,6 +141,12 @@ def test_subplot_objs_have_proper_type(self):
137141
self.layout.scene6 = {}
138142
self.assertIsInstance(self.layout.scene6, go.layout.Scene)
139143

144+
self.layout.mapbox7 = {}
145+
self.assertIsInstance(self.layout.mapbox7, go.layout.Mapbox)
146+
147+
self.layout.polar8 = {}
148+
self.assertIsInstance(self.layout.polar8, go.layout.Polar)
149+
140150
def test_subplot_1_in_constructor(self):
141151
layout = go.Layout(xaxis1=go.layout.XAxis(title='xaxis 1'))
142152
self.assertEqual(layout.xaxis1.title, 'xaxis 1')
@@ -146,38 +156,50 @@ def test_subplot_props_in_constructor(self):
146156
yaxis3=go.layout.YAxis(title='yaxis 3'),
147157
geo4=go.layout.Geo(bgcolor='blue'),
148158
ternary5=go.layout.Ternary(sum=120),
149-
scene6=go.layout.Scene(dragmode='zoom'))
159+
scene6=go.layout.Scene(dragmode='zoom'),
160+
mapbox7=go.layout.Mapbox(zoom=2),
161+
polar8=go.layout.Polar(sector=[0, 90]))
150162

151163
self.assertEqual(layout.xaxis2.title, 'xaxis 2')
152164
self.assertEqual(layout.yaxis3.title, 'yaxis 3')
153165
self.assertEqual(layout.geo4.bgcolor, 'blue')
154166
self.assertEqual(layout.ternary5.sum, 120)
155167
self.assertEqual(layout.scene6.dragmode, 'zoom')
168+
self.assertEqual(layout.mapbox7.zoom, 2)
169+
self.assertEqual(layout.polar8.sector, (0, 90))
156170

157171
def test_create_subplot_with_update(self):
158172

159173
self.layout.update(xaxis2=go.layout.XAxis(title='xaxis 2'),
160174
yaxis3=go.layout.YAxis(title='yaxis 3'),
161175
geo4=go.layout.Geo(bgcolor='blue'),
162176
ternary5=go.layout.Ternary(sum=120),
163-
scene6=go.layout.Scene(dragmode='zoom'))
177+
scene6=go.layout.Scene(dragmode='zoom'),
178+
mapbox7=go.layout.Mapbox(zoom=2),
179+
polar8=go.layout.Polar(sector=[0, 90]))
164180

165181
self.assertEqual(self.layout.xaxis2.title, 'xaxis 2')
166182
self.assertEqual(self.layout.yaxis3.title, 'yaxis 3')
167183
self.assertEqual(self.layout.geo4.bgcolor, 'blue')
168184
self.assertEqual(self.layout.ternary5.sum, 120)
169185
self.assertEqual(self.layout.scene6.dragmode, 'zoom')
186+
self.assertEqual(self.layout.mapbox7.zoom, 2)
187+
self.assertEqual(self.layout.polar8.sector, (0, 90))
170188

171189
def test_create_subplot_with_update_dict(self):
172190

173191
self.layout.update({'xaxis2': {'title': 'xaxis 2'},
174192
'yaxis3': {'title': 'yaxis 3'},
175193
'geo4': {'bgcolor': 'blue'},
176194
'ternary5': {'sum': 120},
177-
'scene6': {'dragmode': 'zoom'}})
195+
'scene6': {'dragmode': 'zoom'},
196+
'mapbox7': {'zoom': 2},
197+
'polar8': {'sector': [0, 90]}})
178198

179199
self.assertEqual(self.layout.xaxis2.title, 'xaxis 2')
180200
self.assertEqual(self.layout.yaxis3.title, 'yaxis 3')
181201
self.assertEqual(self.layout.geo4.bgcolor, 'blue')
182202
self.assertEqual(self.layout.ternary5.sum, 120)
183203
self.assertEqual(self.layout.scene6.dragmode, 'zoom')
204+
self.assertEqual(self.layout.mapbox7.zoom, 2)
205+
self.assertEqual(self.layout.polar8.sector, (0, 90))

0 commit comments

Comments
 (0)