def plot(self, graph=None, nodes=None, name=None, render=None, skip_upload=False):
        """Upload data to the Graphistry server and show as an iframe of it.

        name, Uses the currently bound schema structure and visual encodings.
        Optional parameters override the current bindings.

        When used in a notebook environment, will also show an iframe of the visualization.

        :param graph: Edge table or graph.
        :type graph: Pandas dataframe, NetworkX graph, or IGraph graph.

        :param nodes: Nodes table.
        :type nodes: Pandas dataframe.

        :param render: Whether to render the visualization using the native notebook environment (default True), or return the visualization URL
        :type render: Boolean

        :param skip_upload: Return node/edge/bindings that would have been uploaded. By default, upload happens.
        :type skip_upload: Boolean. 

        **Example: Simple**
            ::

                import graphistry
                es = pandas.DataFrame({'src': [0,1,2], 'dst': [1,2,0]})
                graphistry
                    .bind(source='src', destination='dst')
                    .edges(es)
                    .plot()

        **Example: Shorthand**
            ::

                import graphistry
                es = pandas.DataFrame({'src': [0,1,2], 'dst': [1,2,0]})
                graphistry
                    .bind(source='src', destination='dst')
                    .plot(es)

        """

        if graph is None:
            if self._edges is None:
                util.error('Graph/edges must be specified.')
            g = self._edges
        else:
            g = graph
        n = self._nodes if nodes is None else nodes
        name = name or util.random_string(10)

        self._check_mandatory_bindings(not isinstance(n, type(None)))

        api_version = PyGraphistry.api_version()
        if (api_version == 1):
            dataset = self._plot_dispatch(g, n, name, 'json')
            if skip_upload:
                return dataset
            info = PyGraphistry._etl1(dataset)
        elif (api_version == 2):
            dataset = self._plot_dispatch(g, n, name, 'vgraph')
            if skip_upload:
                return dataset
            info = PyGraphistry._etl2(dataset)

        viz_url = PyGraphistry._viz_url(info, self._url_params)
        full_url = '%s:%s' % (PyGraphistry._config['protocol'], viz_url)

        if render == False or (render == None and not self._render):
            return full_url
        elif util.in_ipython():
            from IPython.core.display import HTML
            return HTML(util.make_iframe(viz_url, self._height, PyGraphistry._config['protocol']))
        else:
            import webbrowser
            webbrowser.open(full_url)
            return full_url
Upload data to the Graphistry server and show as an iframe of it.

        name, Uses the currently bound schema structure and visual encodings.
        Optional parameters override the current bindings.

        When used in a notebook environment, will also show an iframe of the visualization.

        :param graph: Edge table or graph.
        :type graph: Pandas dataframe, NetworkX graph, or IGraph graph.

        :param nodes: Nodes table.
        :type nodes: Pandas dataframe.

        :param render: Whether to render the visualization using the native notebook environment (default True), or return the visualization URL
        :type render: Boolean

        :param skip_upload: Return node/edge/bindings that would have been uploaded. By default, upload happens.
        :type skip_upload: Boolean. 

        **Example: Simple**
            ::

                import graphistry
                es = pandas.DataFrame({'src': [0,1,2], 'dst': [1,2,0]})
                graphistry
                    .bind(source='src', destination='dst')
                    .edges(es)
                    .plot()

        **Example: Shorthand**
            ::

                import graphistry
                es = pandas.DataFrame({'src': [0,1,2], 'dst': [1,2,0]})
                graphistry
                    .bind(source='src', destination='dst')
                    .plot(es)