code: def plot(cg):
      
      from androguard.core.analysis.analysis import ExternalMethod
      import matplotlib.pyplot as plt
      import networkx as nx
      pos = nx.spring_layout(cg)
  
      internal = []
      external = []
  
      for n in cg.node:
          if isinstance(n, ExternalMethod):
              external.append(n)
          else:
              internal.append(n)
  
      nx.draw_networkx_nodes(cg, pos=pos, node_color='r', nodelist=internal)
      nx.draw_networkx_nodes(cg, pos=pos, node_color='b', nodelist=external)
      nx.draw_networkx_edges(cg, pos, arrow=True)
      nx.draw_networkx_labels(cg, pos=pos,
                              labels={x: "{} {}".format(x.get_class_name(),
                                                        x.get_name())
                                      for x in cg.edge})
      plt.draw()
      plt.show()
docs: Plot the call graph using matplotlib
      For larger graphs, this should not be used, as it is very slow
      and probably you can not see anything on it.
  
      :param cg: A networkx call graph to plot