parameters: (self, workspaces, plot_type)
docstring: Make a 3D plot from the selected workspace.
  
          :param workspaces: A list of workspace names.
          :param plot_type: The type of 3D plot, either 'surface', 'wireframe', or 'contour'.
docstring_summary: Make a 3D plot from the selected workspace.
docstring_tokens: Make a 3D plot from the selected workspace .
function: def _do_plot_3D(self, workspaces, plot_type):
          """
          Make a 3D plot from the selected workspace.
  
          :param workspaces: A list of workspace names.
          :param plot_type: The type of 3D plot, either 'surface', 'wireframe', or 'contour'.
          """
          plot_function = getattr(functions, f'plot_{plot_type}', None)
  
          if plot_function is None:
              return
  
          try:
              plot_function(workspaces)
          except RuntimeError as re:
              logger.error(str(re))
function_tokens: def _do_plot_3D ( self , workspaces , plot_type ) : plot_function = getattr ( functions , f'plot_{plot_type}' , None ) if plot_function is None : return try : plot_function ( workspaces ) except RuntimeError as re : logger . error ( str ( re ) )