【发布时间】:2011-12-02 02:12:35
【问题描述】:
我喜欢 matplotlib 创建的绘图以及将它们保存为 SVG 的选项很棒,但是...
我希望能够将图形保存为 SVG,并附上 javascript 代码,以增加一定程度的交互性。例如。对于散点图中的每个数据样本,我想在工具提示中显示一些信息。有没有办法做到这一点?或者你将如何完成这样的事情?
【问题讨论】:
标签: javascript python svg matplotlib visualization
我喜欢 matplotlib 创建的绘图以及将它们保存为 SVG 的选项很棒,但是...
我希望能够将图形保存为 SVG,并附上 javascript 代码,以增加一定程度的交互性。例如。对于散点图中的每个数据样本,我想在工具提示中显示一些信息。有没有办法做到这一点?或者你将如何完成这样的事情?
【问题讨论】:
标签: javascript python svg matplotlib visualization
使用Cytoscape 相当简单。
您需要做的是创建两个文件
这只需 3 列 (sourceNode, destinationNode, edgeLabel)
然后你可以去 File→Import→Network from Table (Text/MS Excel)..
选择源节点、目标节点和交互类型。
记得更改VizMapper中的显示选项
节点和边缘属性文件的格式很简单:节点属性文件以第一行的属性名称开头(注意它不能包含空格)。接下来的每一行都包含节点的名称,后跟一个等号和该属性的值。数字和文本字符串是最常见的属性类型。给定属性的所有值必须具有相同的类型。例如:
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了解更多详情
【讨论】:
如果您同意使用 html 文件而不是 svg;散景可能是您正在寻找的东西?
请看这里http://docs.bokeh.org/en/latest/docs/gallery.html
我认为大多数应用程序不需要服务器,正如他们在文档中所说:“Bokeh 可以使用 file_html() 函数生成独立的 HTML 文档。这个函数可以从它自己的通用模板或您提供的模板。这些文件包含内联绘图的数据并且是完全可传输的,同时仍为您的绘图提供交互式工具(平移、缩放等)。"
【讨论】: