需求
指定并绘制图形的能力集合
为集合着色(以及它们之间的操作结果)
标签集合(下面的示例将具有附加的标签“ A”和“ B”)
奖金
能够显示集合内部数据的功能(例如,让
A = {1;5;10}
和B = {5;20}
出现,该图将在第一个“圆圈”中包含A中的数字(同样,表示B),并在交叉区域显示A ∩ B = {5}
)示例
设置A和B
用红色将
A ∩ B
着色(图像取自公共领域)
#1 楼
venn.jsGitHub:https://github.com/benfred/venn.js
它使用D3.js作为底层图形库。
1。指定并绘制集合
→在线查看
// Code taken from the GitHub repository, the license specified there applies.
// define sets and set set intersections
var sets = [{label: "A", size: 10}, {label: "B", size: 10}],
overlaps = [{sets: [0,1], size: 2}];
// get positions for each set
sets = venn.venn(sets, overlaps);
// draw the diagram in the 'simple_example' div
venn.drawD3Diagram(d3.select(".simple_example"), sets, 300, 300);
2。设置颜色集
我还没有尝试选择自定义颜色,但是很有可能。
您还可以随意设置交集区域的样式:http://benfred.github。 io / venn.js / examples / intersection_tooltip.html
3。标签集
请参见第一个示例。
奖金4.标签相交区域
据我所知,这是不可能的。 (我必须承认,我没有完全阅读文档和代码。)
注1
在某些情况下,圆的布局无法正确设置。在某些情况下,切换到多维缩放算法可能会解决这些问题:http://benfred.github.io/venn.js/examples/mds.html
但是,我也遇到了其他问题布局失败是由于圆的比例缩放导致的情况。您可能想阅读作者的博客文章,这些文章涉及绘制维恩图时遇到的问题: .js /
http://www.benfrederickson.com/multiDimension-scaling/
http://www.benfrederickson.com/calculating-the-intersection-of-3-or-more-circles /
注2
Venn.js要求您构建重叠部分并自行设置。如果有人对输入
{1;2;3} ∩ {2;3}
的功能感兴趣,那么我已经编写了一个小型库来执行此操作。也许将来我将代码放在GitHub上。#2 楼
Github:https://github.com/lafarer/d3-venn演示:http://bl.ocks.org/lafarer/0f7677bdfa6c3ab7f6c3
您可以指定集合和区域(交叉点) ),配色方案;它支持鼠标事件和选择。它最多可以使用7套。
免责声明:我是d3插件的作者
评论
您的插件看起来非常不错。我会对与区域分布有关的错误和不准确之处感兴趣。在某些情况下,您的算法会失败吗?
– ComFreek
2014年11月17日下午13:30
到目前为止,该插件期望一个正确且完整的“维恩模型”(没有缺失的值或区域)。进行此类型验证绝对是附加值,因为可视化依赖于此。另一方面,业务验证(例如,每个区域的总数应等于Universe)不是插件的责任。关于这些方面,我从来没有任何错误或不正确之处。我很高兴你喜欢。
–拉法尔
2014年11月18日14:19
链接已死。
–弗朗克·德农库尔
15年10月13日在16:26
Lafarer,您是否将存储库移至其他地方?还是您删除了它(如果要删除,请也删除此答案)?谢谢!
–尼古拉斯·拉乌尔(Nicolas Raoul)♦
19-10-14在23:43
评论
webhome.cs.uvic.ca/~ruskey/出版物/ SixVenn /代码/ SixVenn / ...
– Mohammad Reza Rezwani
2014年7月23日在12:35