Gephi+Inkscape图论画图

Gephi+Inkscape图论画图

背景

老板说帮忙画几个图吧,类似下图的。然后发来了一堆 txt 文件,就像这样。好了怎么画呢。经过不断摸索,整理出一个自认为比较好的工作流程。好了不扯淡了,直接进入正题。需要用到的分别为python(一点点,修饰一下数据,使其符合Gephi的要求),Gephi(用来画图), Inkscape(修饰图片,输出eps文件)。

要求
图1

Python

这里我们主要只需要一点点字符串 split()相关的知识即可。考察给定的数据的格式,看看用的什么分隔符(space,tab),从左往右分好(split),还是从右往左分好(rsplit),还是需要结合。

例子:
上面的图片中的文件,有两部分组成,上边是点集,下边是边集。点集分出来id和label,再后面的数据丢弃。边集把对应的id分割出来。最后拼装成两个Gephi要求的csv格式。

name = "div-pub-avg-core"
f = open(name + ".txt", "r")
fnode = open(name + "-node.csv", "w")
fedge = open(name + "-edge.csv", "w")
fnode.write("Id,Label\n")
fedge.write("source,target,type\n")

x = f.readlines()
for xx in x:
    if (len(xx.split()) != 2):
        y = xx.split(' ', 1)[0]
        yy = xx.split(' ', 1)[1].rsplit(' ', 2)[0]
        fnode.write(y + "," + yy + "\n")
    else:
        y = xx.split()
        fedge.write(y[0] + "," + y[1] + ",undirected\n")
f.close()
fnode.close()
fedge.close()

Gephi

复杂网络分析的工具。我们要借助它来画图。关于数据的输入,Gephi提供了多种方法,这里我们只讲从csv导入。Gephi要求提供两个csv文件,分别描述Nodes和Edges(当然,只输入一个文件是可以的,不过只有节点,或者只有边而节点没有标签),格式要求如下:

第一行:表头,表示下面的数据的含义
第二行开始:数据内容

例如:
Nodes & Edges

注意边表格一定
准备好了csv之后,直接导入即可。(文件-Import spreadsheet)分别导入Nodes和Edges。导入进去是一个随机的图形。随后我们用左边的变换,变成需要的样子,然后预览,选择缺省值直边,调整标签、线大小颜色等。如下图所示,还可以通过旋转变换把它搞正。

SVG

随后输出SVG文件,(文件-输出-SVG文件)。SVG是一种矢量格式,转换时不会失真,而且文字(标签)和图像是可以分离的,方便我们在Inkscape中处理。(例如做个下标什么的)

Inkscape

Inkscape是一个矢量绘图软件。论文里很多图都可以用它来画,就像我们这种图,只要你有足够的耐心,也可以用它画出来。只不过比较费时罢了。我们需要用Inkscape帮忙把SVG转换成EPS文件。因为Gephi不能直接导出EPS。(不过 PDFTeXify 也貌似可以直接支持SVG文件)。这种转换是矢量图之间直接的转换,不会失真。同时上一段也讲了,在这一步,我们也可以处理修饰一下图片,具体操作就跟PS一样,不多说了。弄完之后,直接另存为 EPS 图像即可。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Gephi 是一种开源的网络可视化工具,它允许用户通过交互式方式探索和分析网络数据。Gephi 提供了一个插件系统,允许用户通过编写插件来扩展其功能。Python 是一种流行的编程语言,它具有丰富的科学计算库和网络分析工具。因此,可以使用 Python 编写 Gephi 插件来扩展 Gephi 的功能。 要使用 Python 开发 Gephi 插件,需要下载 Gephi 工具和 Gephi Toolkit。Gephi Toolkit 是一个 Java 库,允许用户使用 Java 或 Python 来访问 Gephi 的功能。使用 Python 开发 Gephi 插件的步骤如下: 1. 安装 Gephi 工具和 Gephi Toolkit。 2. 使用 Python 编写插件代码。可以使用 Gephi Toolkit 提供的 Python API,来访问 Gephi 的功能。 3. 将代码打包成 jar 文件,以便在 Gephi 中加载。 4. 在 Gephi 中加载插件并运行。 下面是一个使用 Python 开发 Gephi 插件的示例,该插件将网络数据保存为 CSV 文件: ```python from org.gephi.io.exporter.plugin import ExporterCSV from org.openide.util import Lookup exporter = Lookup.getDefault().lookup(ExporterCSV) exporter.setWorkspace(workspace) exporter.setExportVisible(True) exporter.setExportEdges(True) exporter.setExportNodes(True) exporter.setExportEdgeLabels(True) exporter.setExportNodeLabels(True) exporter.setExportType(ExporterCSV.ExportFileType.NODES_EDGES) exporter.setWorkspace(workspace) exporter.execute(NullProgressTicket()) ``` 这个示例使用 Gephi Toolkit 提供的 ExporterCSV 类来导出网络数据。在这个示例中,我们设置了导出选项,例如导出可见节点和边缘,以及将节点和边缘标签导出为 CSV 文件。最后,我们调用 execute() 方法来执行导出操作。 需要注意的是,Gephi Toolkit 提供了丰富的 API,可以用来访问 Gephi 的各种功能。因此,使用 Python 开发 Gephi 插件的难度并不高,只需要掌握基本的 Python 编程知识和 Gephi Toolkit 的 API。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值