【问题标题】:interactive _standalone_ output from matplotlibmatplotlib 的交互式独立输出
【发布时间】:2011-12-02 02:12:35
【问题描述】:

我喜欢 matplotlib 创建的绘图以及将它们保存为 SVG 的选项很棒,但是...

我希望能够将图形保存为 SVG,并附上 javascript 代码,以增加一定程度的交互性。例如。对于散点图中的每个数据样本,我想在工具提示中显示一些信息。有没有办法做到这一点?或者你将如何完成这样的事情?

【问题讨论】:

    标签: javascript python svg matplotlib visualization


    【解决方案1】:

    使用Cytoscape 相当简单。
    您需要做的是创建两个文件

    1. 包含节点和边信息的文件 (File1)
    2. 包含工具提示信息的文件 (File2)

    文件1

    这只需 3 列 (sourceNode, destinationNode, edgeLabel) 然后你可以去 File→Import→Network from Table (Text/MS Excel).. 选择源节点、目标节点和交互类型。

    记得更改VizMapper中的显示选项

    文件2

    节点和边缘属性文件的格式很简单:节点属性文件以第一行的属性名称开头(注意它不能包含空格)。接下来的每一行都包含节点的名称,后跟一个等号和该属性的值。数字和文本字符串是最常见的属性类型。给定属性的所有值必须具有相同的类型。例如:

    FunctionalCategory
    YAL001C = metabolism
    YAR002W = apoptosis
    YBL007C = ribosome
    

    边缘属性文件的结构几乎相同,只是边缘的名称是源节点名称,括号中是交互类型,然后是目标节点名称。方向性很重要,因此切换源和目标将引用不同的(或可能不存在的)边缘。以下是一个示例边缘属性文件:

    InteractionStrength
    YAL001C (pp) YBR043W = 0.82
    YMR022W (pd) YDL112C = 0.441
    YDL112C (pd) YMR022W = 0.9013
    

    由于 Cytoscape 将边缘属性视为有方向的,因此第二和第三边缘属性值指的是两个不同的边缘(源和目标是相反的,尽管所涉及的节点是相同的)。

    每个属性都存储在一个单独的文件中。节点和边缘属性文件使用相同的格式。节点属性文件名通常使用后缀“.noa”,而边缘属性文件名使用后缀“.eda”。 Cytoscape 在浏览属性文件时会识别这些后缀。

    可以使用 -n 和 -e 选项或通过文件 → 导入菜单在命令行加载节点和边缘属性。

    当使用表达式矩阵加载表达式数据时,除非另有明确指定,否则它会自动加载为节点属性数据。

    节点和边属性附加到节点和边上,因此独立于网络。给定节点或边的属性将应用于所有加载的网络文件中该节点或边的所有副本,无论是先导入属性文件还是网络文件。

    注意:要在 Cytoscape 2.4 中导入网络属性,请转到文件 → 导入 → 表中的属性(文本/MS Excel)...或将它们编码到 XGMML 网络文件中

    第一行之后的每一行都标识了对象的名称(节点属性文件中的节点或边属性文件中的边)以及属性值的字符串表示形式。分隔符始终是等号;等号前后的空格(空格和/或制表符)被忽略。

    如果属性要映射到任何东西,对象名称必须是属性浏览器最左列中显示的节点 ID 或边缘 ID。这些名称必须准确复制,包括大小写,否则它们将不匹配。

    阅读this了解更多详情

    【讨论】:

    • 这可能很有趣,尽管我看不到如何用它创建“交互式”散点图。据我所知,您描述的工具可用于可视化带有元数据的图形。但我说的是图论意义上的图而不是图。你觉得交互式散点图的例子可以用cytoscape实现吗?
    • 哦不,它是高度互动的。我假设,通过交互,您的意思是,您可以看到关于用鼠标指针指向节点、用鼠标移动节点、重新排列节点的工具提示……可以使用不同的绘图算法排列节点。所以,是的,交互式散点图可以用 cytoscape 完成
    【解决方案2】:

    如果您同意使用 html 文件而不是 svg;散景可能是您正在寻找的东西?

    请看这里http://docs.bokeh.org/en/latest/docs/gallery.html

    我认为大多数应用程序不需要服务器,正如他们在文档中所说:“Bokeh 可以使用 file_html() 函数生成独立的 HTML 文档。这个函数可以从它自己的通用模板或您提供的模板。这些文件包含内联绘图的数据并且是完全可传输的,同时仍为您的绘图提供交互式工具(平移、缩放等)。"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-18
      • 1970-01-01
      • 2015-08-20
      • 2010-12-28
      • 2018-07-04
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      相关资源
      最近更新 更多