@@ -112,6 +112,14 @@ def save_figure_as(fig, filename):
112
112
if filename is not None :
113
113
fig .savefig (str (filename ), bbox_inches = 'tight' )
114
114
115
+ def is_notebook (self ):
116
+ """ Detects if Jupyter notebook GUI toolkit is active
117
+
118
+ return: True if the module is running inside a Jupyter notebook
119
+ rtype: bool
120
+ """
121
+ return True if "nbAgg" == mpl .get_backend () else False
122
+
115
123
116
124
class VisCurve2D (vis .VisAbstract ):
117
125
""" Matplotlib visualization module for 2D curves """
@@ -184,14 +192,16 @@ def render(self, **kwargs):
184
192
fig_filename = kwargs .get ('fig_save_as' , None )
185
193
fig_display = kwargs .get ('display_plot' , True )
186
194
187
- # Display the plot
188
- if fig_display :
189
- plt .show ()
190
- else :
191
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
195
+ # Check if running inside a Jupyter notebook
196
+ if not self .vconf .is_notebook ():
197
+ # Display the plot
198
+ if fig_display :
199
+ plt .show ()
200
+ else :
201
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
192
202
193
- # Save the figure
194
- self .vconf .save_figure_as (fig , fig_filename )
203
+ # Save the figure
204
+ self .vconf .save_figure_as (fig , fig_filename )
195
205
196
206
197
207
class VisCurve3D (vis .VisAbstract ):
@@ -271,17 +281,19 @@ def render(self, **kwargs):
271
281
fig_filename = kwargs .get ('fig_save_as' , None )
272
282
fig_display = kwargs .get ('display_plot' , True )
273
283
274
- # Display the plot
275
- if fig_display :
276
- plt .show ()
277
- else :
278
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
284
+ # Check if running inside a Jupyter notebook
285
+ if not self .vconf .is_notebook ():
286
+ # Display the plot
287
+ if fig_display :
288
+ plt .show ()
289
+ else :
290
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
279
291
280
- # Save the figure
281
- self .vconf .save_figure_as (fig , fig_filename )
292
+ # Save the figure
293
+ self .vconf .save_figure_as (fig , fig_filename )
282
294
283
- # Return the figure object
284
- return fig
295
+ # Return the figure object
296
+ return fig
285
297
286
298
287
299
class VisSurface (vis .VisAbstract ):
@@ -389,17 +401,19 @@ def animate(self, **kwargs):
389
401
fig_filename = kwargs .get ('fig_save_as' , None )
390
402
fig_display = kwargs .get ('display_plot' , True )
391
403
392
- # Display the plot
393
- if fig_display :
394
- plt .show ()
395
- else :
396
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
404
+ # Check if running inside a Jupyter notebook
405
+ if not self .vconf .is_notebook ():
406
+ # Display the plot
407
+ if fig_display :
408
+ plt .show ()
409
+ else :
410
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
397
411
398
- # Save the figure
399
- self .vconf .save_figure_as (fig , fig_filename )
412
+ # Save the figure
413
+ self .vconf .save_figure_as (fig , fig_filename )
400
414
401
- # Return the figure object
402
- return fig
415
+ # Return the figure object
416
+ return fig
403
417
404
418
def render (self , ** kwargs ):
405
419
""" Plots the surface and the control points grid.
@@ -528,17 +542,19 @@ def render(self, **kwargs):
528
542
fig_filename = kwargs .get ('fig_save_as' , None )
529
543
fig_display = kwargs .get ('display_plot' , True )
530
544
531
- # Display the plot
532
- if fig_display :
533
- plt .show ()
534
- else :
535
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
545
+ # Check if running inside a Jupyter notebook
546
+ if not self .vconf .is_notebook ():
547
+ # Display the plot
548
+ if fig_display :
549
+ plt .show ()
550
+ else :
551
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
536
552
537
- # Save the figure
538
- self .vconf .save_figure_as (fig , fig_filename )
553
+ # Save the figure
554
+ self .vconf .save_figure_as (fig , fig_filename )
539
555
540
- # Return the figure object
541
- return fig
556
+ # Return the figure object
557
+ return fig
542
558
543
559
544
560
# VisSurfTriangle is an alias for VisSurface class
@@ -644,17 +660,19 @@ def render(self, **kwargs):
644
660
fig_filename = kwargs .get ('fig_save_as' , None )
645
661
fig_display = kwargs .get ('display_plot' , True )
646
662
647
- # Display the plot
648
- if fig_display :
649
- plt .show ()
650
- else :
651
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
663
+ # Check if running inside a Jupyter notebook
664
+ if not self .vconf .is_notebook ():
665
+ # Display the plot
666
+ if fig_display :
667
+ plt .show ()
668
+ else :
669
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
652
670
653
- # Save the figure
654
- self .vconf .save_figure_as (fig , fig_filename )
671
+ # Save the figure
672
+ self .vconf .save_figure_as (fig , fig_filename )
655
673
656
- # Return the figure object
657
- return fig
674
+ # Return the figure object
675
+ return fig
658
676
659
677
660
678
class VisSurfScatter (vis .VisAbstract ):
@@ -757,17 +775,19 @@ def render(self, **kwargs):
757
775
fig_filename = kwargs .get ('fig_save_as' , None )
758
776
fig_display = kwargs .get ('display_plot' , True )
759
777
760
- # Display the plot
761
- if fig_display :
762
- plt .show ()
763
- else :
764
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
778
+ # Check if running inside a Jupyter notebook
779
+ if not self .vconf .is_notebook ():
780
+ # Display the plot
781
+ if fig_display :
782
+ plt .show ()
783
+ else :
784
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
765
785
766
- # Save the figure
767
- self .vconf .save_figure_as (fig , fig_filename )
786
+ # Save the figure
787
+ self .vconf .save_figure_as (fig , fig_filename )
768
788
769
- # Return the figure object
770
- return fig
789
+ # Return the figure object
790
+ return fig
771
791
772
792
773
793
class VisVolume (vis .VisAbstract ):
@@ -845,17 +865,19 @@ def render(self, **kwargs):
845
865
fig_filename = kwargs .get ('fig_save_as' , None )
846
866
fig_display = kwargs .get ('display_plot' , True )
847
867
848
- # Display the plot
849
- if fig_display :
850
- plt .show ()
851
- else :
852
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
868
+ # Check if running inside a Jupyter notebook
869
+ if not self .vconf .is_notebook ():
870
+ # Display the plot
871
+ if fig_display :
872
+ plt .show ()
873
+ else :
874
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
853
875
854
- # Save the figure
855
- self .vconf .save_figure_as (fig , fig_filename )
876
+ # Save the figure
877
+ self .vconf .save_figure_as (fig , fig_filename )
856
878
857
- # Return the figure object
858
- return fig
879
+ # Return the figure object
880
+ return fig
859
881
860
882
861
883
class VisVoxel (vis .VisAbstract ):
@@ -945,14 +967,16 @@ def render(self, **kwargs):
945
967
fig_filename = kwargs .get ('fig_save_as' , None )
946
968
fig_display = kwargs .get ('display_plot' , True )
947
969
948
- # Display the plot
949
- if fig_display :
950
- plt .show ()
951
- else :
952
- fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
970
+ # Check if running inside a Jupyter notebook
971
+ if not self .vconf .is_notebook ():
972
+ # Display the plot
973
+ if fig_display :
974
+ plt .show ()
975
+ else :
976
+ fig_filename = self .vconf .figure_image_filename if fig_filename is None else fig_filename
953
977
954
- # Save the figure
955
- self .vconf .save_figure_as (fig , fig_filename )
978
+ # Save the figure
979
+ self .vconf .save_figure_as (fig , fig_filename )
956
980
957
- # Return the figure object
958
- return fig
981
+ # Return the figure object
982
+ return fig
0 commit comments