如何在Python中用百分比标记Venn图的集合大小?

4

我正在使用matplotlib_venn.venn2函数在单个图中绘制四个不同的Venn图。

该函数的subset参数的输入是字符串集合:

    cse_set_ucb = set(['data science','algorithms', 'machine learning',...])

    ece_set_ucb = set(['circuits', 'signals', 'machine learning',....])

    v_ucb = venn2([cse_set_ucb,ece_set_ucb],set_labels=['CSE','ECE'],set_colors=['r','g'])

同样的,对于v_ucla、v_ucsb和v_ucsd也是如此。

当前结果:

输入图像描述

然而,为了使比较更加直观,我想在Venn图中显示百分比,而不是集合大小。是否可以通过venn2中的某些功能来实现呢?

例如,第一个绘图将被替换为:

输入图像描述

我目前能想到的唯一替代方法是自己进行规范化,然后将子集大小输入venn2函数,而不是集合本身,但我希望能够找到更聪明的方法来做到这一点。

2个回答

11

嗨,伙计。有没有办法使用 subset_label_formatter 参数隐藏子集标签? - steven
我通过以下方式成功隐藏了标签:subset_label_formatter=lambda x:f"" - Coder3110

4
## total and percentage
total = len(set_a.union(set_b))
v1 = venn2(
    [set_a, set_b],
    set_labels=labels_depts,
    set_colors=['red', 'green'],
    subset_label_formatter=lambda x: str(x) + "\n(" + f"{(x/total):1.0%}" + ")"

)

enter image description here


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