def save_plot(cls, data, columns, plottype, fmt='json', **kwargs):
        """
        Exports the data in the following formats for plotting:

        csv: for any external plotting application
        json: for a web-app at https://mpds.io/visavis
        """
        cls._verify_export_dir()
        plot = {"use_visavis_type": plottype, "payload": {}}

        if isinstance(data, pd.DataFrame):
            iter_data = data.iterrows
            pointers = columns
        else:
            iter_data = lambda: enumerate(data)
            pointers = range(len(data[0]))

        if fmt == 'csv':
            fmt_export = os.path.join(cls.export_dir, cls._gen_basename() + ".csv")
            f_export = open(fmt_export, "w")
            f_export.write("%s\n" % ",".join(map(str, columns)))
            for _, row in iter_data():
                f_export.write("%s\n" % ",".join([str(row[i]) for i in pointers]))
            f_export.close()

        else:
            fmt_export = os.path.join(cls.export_dir, cls._gen_basename() + ".json")
            f_export = open(fmt_export, "w")

            if plottype == 'bar':

                plot["payload"] = {"x": [], "y": [], "xtitle": cls._get_title(columns[0]), "ytitle": cls._get_title(columns[1])}

                for _, row in iter_data():
                    plot["payload"]["x"].append(row[pointers[0]])
                    plot["payload"]["y"].append(row[pointers[1]])

            elif plottype == 'plot3d':

                plot["payload"]["points"] = {"x": [], "y": [], "z": [], "labels": []}
                plot["payload"]["meshes"] = []
                plot["payload"]["xtitle"] = cls._get_title(columns[0])
                plot["payload"]["ytitle"] = cls._get_title(columns[1])
                plot["payload"]["ztitle"] = cls._get_title(columns[2])
                recent_mesh = 0

                for _, row in iter_data():
                    plot["payload"]["points"]["x"].append(row[pointers[0]])
                    plot["payload"]["points"]["y"].append(row[pointers[1]])
                    plot["payload"]["points"]["z"].append(row[pointers[2]])
                    plot["payload"]["points"]["labels"].append(row[pointers[3]])

                    if row[4] != recent_mesh:
                        plot["payload"]["meshes"].append({"x": [], "y": [], "z": []})
                    recent_mesh = row[4]

                    if plot["payload"]["meshes"]:
                        plot["payload"]["meshes"][-1]["x"].append(row[pointers[0]])
                        plot["payload"]["meshes"][-1]["y"].append(row[pointers[1]])
                        plot["payload"]["meshes"][-1]["z"].append(row[pointers[2]])

            if kwargs:
                plot["payload"].update(kwargs)

            else: raise RuntimeError("\r\nError: %s is an unknown plot type" % plottype)

            f_export.write(json.dumps(plot, escape_forward_slashes=False, indent=4))
            f_export.close()

        return fmt_export
def save_plot ( cls , data , columns , plottype , fmt = 'json' , ** kwargs ) : cls . _verify_export_dir ( ) plot = { "use_visavis_type" : plottype , "payload" : { } } if isinstance ( data , pd . DataFrame ) : iter_data = data . iterrows pointers = columns else : iter_data = lambda : enumerate ( data ) pointers = range ( len ( data [ 0 ] ) ) if fmt == 'csv' : fmt_export = os . path . join ( cls . export_dir , cls . _gen_basename ( ) + ".csv" ) f_export = open ( fmt_export , "w" ) f_export . write ( "%s\n" % "," . join ( map ( str , columns ) ) ) for _ , row in iter_data ( ) : f_export . write ( "%s\n" % "," . join ( [ str ( row [ i ] ) for i in pointers ] ) ) f_export . close ( ) else : fmt_export = os . path . join ( cls . export_dir , cls . _gen_basename ( ) + ".json" ) f_export = open ( fmt_export , "w" ) if plottype == 'bar' : plot [ "payload" ] = { "x" : [ ] , "y" : [ ] , "xtitle" : cls . _get_title ( columns [ 0 ] ) , "ytitle" : cls . _get_title ( columns [ 1 ] ) } for _ , row in iter_data ( ) : plot [ "payload" ] [ "x" ] . append ( row [ pointers [ 0 ] ] ) plot [ "payload" ] [ "y" ] . append ( row [ pointers [ 1 ] ] ) elif plottype == 'plot3d' : plot [ "payload" ] [ "points" ] = { "x" : [ ] , "y" : [ ] , "z" : [ ] , "labels" : [ ] } plot [ "payload" ] [ "meshes" ] = [ ] plot [ "payload" ] [ "xtitle" ] = cls . _get_title ( columns [ 0 ] ) plot [ "payload" ] [ "ytitle" ] = cls . _get_title ( columns [ 1 ] ) plot [ "payload" ] [ "ztitle" ] = cls . _get_title ( columns [ 2 ] ) recent_mesh = 0 for _ , row in iter_data ( ) : plot [ "payload" ] [ "points" ] [ "x" ] . append ( row [ pointers [ 0 ] ] ) plot [ "payload" ] [ "points" ] [ "y" ] . append ( row [ pointers [ 1 ] ] ) plot [ "payload" ] [ "points" ] [ "z" ] . append ( row [ pointers [ 2 ] ] ) plot [ "payload" ] [ "points" ] [ "labels" ] . append ( row [ pointers [ 3 ] ] ) if row [ 4 ] != recent_mesh : plot [ "payload" ] [ "meshes" ] . append ( { "x" : [ ] , "y" : [ ] , "z" : [ ] } ) recent_mesh = row [ 4 ] if plot [ "payload" ] [ "meshes" ] : plot [ "payload" ] [ "meshes" ] [ - 1 ] [ "x" ] . append ( row [ pointers [ 0 ] ] ) plot [ "payload" ] [ "meshes" ] [ - 1 ] [ "y" ] . append ( row [ pointers [ 1 ] ] ) plot [ "payload" ] [ "meshes" ] [ - 1 ] [ "z" ] . append ( row [ pointers [ 2 ] ] ) if kwargs : plot [ "payload" ] . update ( kwargs ) else : raise RuntimeError ( "\r\nError: %s is an unknown plot type" % plottype ) f_export . write ( json . dumps ( plot , escape_forward_slashes = False , indent = 4 ) ) f_export . close ( ) return fmt_export
Exports the data in the following formats for plotting:

        csv: for any external plotting application
        json: for a web-app at https://mpds.io/visavis