matplotlib 交互式独立输出

7
我喜欢matplotlib创建的图表,并且将它们保存为SVG选项很棒,但是...
我希望能够保存图形为SVG,并附带JavaScript代码,以添加一定程度的交互性。例如,在散点图中的每个数据样本中,我想在工具提示中显示一些信息。有什么方法可以实现这一点吗?或者你会如何完成这样的事情?
2个回答

1

这很容易使用Cytoscape来完成。
你需要做的是创建两个文件:

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

文件1

这只需要3列(sourceNode,destinationNode,edgeLabel),然后您可以选择 文件-> 从表格(文本/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以获取更多详细信息


1
这可能会很有趣,尽管我不清楚如何使用它来创建“交互式”散点图。据我所知,您描述的工具可以用于可视化带元数据的图形。但是我更多谈论的是情况下的绘图而非图形理论中的图表。您认为可以通过cytoscape实现交互式散点图示例吗? - tsh
哦不,它非常互动。我假设你所说的互动是指你可以在鼠标指针指向节点时看到工具提示,用鼠标移动节点,重新排列节点...节点可以使用不同的绘图算法进行排列。因此,是的,可以使用cytoscape创建交互式散点图。 - Lelouch Lamperouge

0

如果您同意使用html文件而不是svg,则Bokeh可能是您要寻找的东西?

请参见此处http://docs.bokeh.org/en/latest/docs/gallery.html

我认为对于大多数应用程序,您不需要服务器,因为文档中说:“Bokeh可以使用file_html()函数生成独立的HTML文档。此函数可以从其自己的通用模板或您提供的模板发出HTML。这些文件包含图形的数据,并且在传输时完全可移植,同时仍然为您的图形提供交互式工具(平移,缩放等)。"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接