10分钟掌握Graphistry可视化#

本指南涵盖了核心的可视化主题,例如上传和查看图表之间的区别,客户端/服务器架构的工作原理,以及如何使用PyGraphistry的流畅API通过结合编码、布局和设置等概念来创建强大的可视化。最后,我们概述了如何将可视化嵌入到不同的工作流程中。

关键概念#

客户端/服务器架构:上传 vs. 服务 vs. 查看#

PyGraphistry 使用客户端-服务器模型。通过分离上传器、服务器和查看器,我们可以实现更好的性能、新功能以及多种使用模式。

  • 上传客户端: 在您的本地环境中,您可以塑造数据并调用Graphistry API将其上传到服务器(自托管或Graphistry Hub)。

  • 可视化服务器: 该服务器使用GPU加速处理数据以处理大型图形。

  • 可视化客户端: 图表随后在您的浏览器中展示,通过适当使用本地和远程GPU资源,缩放和过滤等交互操作得以流畅处理。

这种分割架构允许对即使最大的数据集进行可扩展的高性能可视化。

流式API风格#

PyGraphistry 使用了一种流式风格的 API,这意味着方法可以链式调用。这使得代码简洁且易于阅读,无需进行大量的设置:

g1 = graphistry.edges(df, 'src', 'dst')
g2 = g1.nodes(df2, 'n')
g3 = g2.encode_point_size('score')
g3.plot()

# As shorter fluent lines
g = graphistry.edges(df, 'src', 'dst').nodes(df2, 'n')
g.encode_point_size('score').plot()

这种方法允许您根据需要分层操作,保持代码轻量且直观。

塑造您的数据#

PyGraphistry 支持灵活地塑造您的图形数据:

  • `.edges()` & `.nodes()`: 定义实体之间的边和可选的节点属性

    # df[['src', 'dst', ...]]
    graphistry.edges(df, 'src', 'dst').plot()
    
    # ... + df2[['n', ...]]
    graphistry.edges(df, 'src', 'dst').nodes(df2, 'n').plot()
    
  • 超图: 使用多列作为节点以实现更复杂的可视化

    # df[['actor', 'event', 'location', ...]]
    hg = graphistry.hypergraph(df, ['actor', 'event', 'location'])
    hg['graph'].plot()
    
  • UMAP: 基于行相似性的降维和嵌入可视化工具

    # df[['score', 'time', ...]]
    graphistry.nodes(df).umap(X=['score', 'time']).plot()
    

这些方法确保您可以快速加载和整理数据,并进入可视化阶段。

布局#

PyGraphistry的布局目录提供了许多选项,涵盖:

  • 实时布局: Graphistry 在交互时执行 GPU 加速的力导向布局。 您可以调整设置,例如重力、边权重和初始聚类时间:

    g.settings(url_params={'play': 7000, 'info': True}).plot()
    
  • PyGraphistry 布局: PyGraphistry 提供了其他地方没有的特殊布局,这些布局与渲染引擎的特殊功能配合使用:

    g.time_ring_layout('time_col').plot()
    
  • 插件布局: 集成使用外部库以实现特定布局:

    • Graphviz 用于分层和定向布局,例如 “dot” 引擎

    • cuGraph 用于GPU加速的FA2,这是Graphistry实时布局的一个较弱版本

    • igraph 用于基于CPU的布局,类似于GraphViz,并且布局更侧重于中等规模的社交网络

  • 外部布局:传入xy列,例如来自您自己的编辑、外部数据或外部ML/AI包:

    # nodes_df[['x', 'y', 'n', ...]]
    g = graphistry.edges(e_df, 's', 'd').nodes(nodes_df, 'n')
    g2 = g.settings(url_params={'play': 0}) # skip initial loadtime layout
    g2.plot()
    

节点和边编码#

您可以使用颜色、大小、图标等视觉方式编码您的图形属性:

全局URL设置#

Graphistry 可视化通过 URL 参数高度可配置。您可以控制外观、交互和数据过滤器:

g.settings(url_params={'play': 7000, 'info': True}).plot()

有关参数的完整列表,请参阅官方REST URL参数页面

绘图:内联和URL渲染#

一旦你准备好进行可视化,使用 .plot() 来渲染:

  • 内联绘图:直接在您的笔记本或Python环境中嵌入交互式可视化:

    g.plot()
    
  • URL渲染:获取一个可分享和可嵌入的URL以在浏览器中查看:

    url = g.plot(render=False)
    print(f"View your graph at: {url}")
    

    您可以使用URL参数和JavaScript进一步控制嵌入的可视化

下一步#

外部资源#

要深入了解图分析和可视化,请查看以下资源:

祝您绘图愉快!