Skip to content

Commit e50863d

Browse files
committed
Added user warning when annotations lie outside plotly's 'paper' bounds.
Closes #58
1 parent e3d83f5 commit e50863d

2 files changed

Lines changed: 21 additions & 0 deletions

File tree

plotly/matplotlylib/mpltools.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,21 @@ def check_bar_match(old_bar, new_bar):
3535
return False
3636

3737

38+
def check_corners(inner_obj, outer_obj):
39+
inner_corners = inner_obj.get_window_extent().corners()
40+
outer_corners = outer_obj.get_window_extent().corners()
41+
if inner_corners[0][0] < outer_corners[0][0]:
42+
return False
43+
elif inner_corners[0][1] < outer_corners[0][1]:
44+
return False
45+
elif inner_corners[3][0] > outer_corners[3][0]:
46+
return False
47+
elif inner_corners[3][1] > outer_corners[3][1]:
48+
return False
49+
else:
50+
return True
51+
52+
3853
def convert_affine_trans(dpi=None, aff=None):
3954
if aff is not None and dpi is not None:
4055
try:

plotly/matplotlylib/renderer.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,12 @@ def draw_text(self, **props):
498498
499499
"""
500500
self.msg += " Attempting to draw an mpl text object\n"
501+
if not mpltools.check_corners(props['mplobj'], self.mpl_fig):
502+
warnings.warn("\n"
503+
"The annotation you're trying to draw lies outside "
504+
"the given figure size. Therefore, the resulting "
505+
"Plotly figure may not be large enough to view the "
506+
"full text.")
501507
align = props['mplobj']._multialignment
502508
if not align:
503509
align = props['style']['halign'] # mpl default

0 commit comments

Comments
 (0)