如何重新创建GitHub网络图
是否有任何开源项目或jQuery插件,我可以用来重新创建GitHub网络图?
我想创建具有类似function的东西。
Github网络视图起初看起来很难进行逆向工程。 但是,在使用http://jsbeautifier.org/去除代码后,代码变得非常容易理解。 因此,运行bundle_github.js
和bundle_common.js
并获取jQuery 1.4.2源代码。 然后你就可以开始阅读源代码/调试页面了。
在Github Network页面中,如果canvas正在运行,则只需通过以下方式生成网络:
var ng = new Network("#ng", 920, 600)
继续使用由defineNetwork(window.jQuery)
生成的对象,(在很多其他的东西中)
- 从Github Network API获取数据
- 创建
d.KeyDriver
和d.MouseDriver
实例以处理输入 - 使用
d.Chrome
绘制时间轴,页眉和页脚 - 使用
d.Graph
编写网络图
(每个d.ClassName
是Network对象的内部类,因此它们的源代码位于defineNetwork
源代码中)
我没有花时间真正深入研究代码并找到有关它如何工作的所有细节,但它的可读性还可以。 现在取决于你想做什么,你可以例如
- (可能)进行非常小的修改以获取代码以在github.com外部呈现Github数据
- 以Github Network API格式提供您自己的数据,并将其可视化
- 只需调整
d.Graph
类来处理您自己的数据 - 只需阅读代码并学习
注意:您可能无法合法地使用代码或修改,因此我建议仅为学习目的(尽管IANAL)。
您可能希望依赖Github的Network API来处理:
列出绘制网络图所需的所有数据,每个fork的头部都有新的更改以及所有相关的提交。
至于渲染,Github使用canvas来显示其网络图。 你可能想看看RaphaelJS库在渲染Github的影响图方面做得很好: http : //raphaeljs.com/github/impact.html