如何在python中用设置大小的百分比标记维恩图?

时间:2018-11-25 01:47:41

标签: python venn-diagram matplotlib-venn

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

我为函数的子集参数输入的是字符串集:

DECLARE @NewCustomers XML;
SET @NewCustomers = '
<NewCustomers>

<Customer LastName="Chan" FirstName="Isabella" Password="" 
EmailAddress="izzychan@yahoo.com"/>

<Customer LastName="Prine" FirstName="John" Password="" 
EmailAddress="johnprine@gmail.com"/>

<Customer LastName="Kitchen" FirstName="Kathy" Password="" 
EmailAddress="kathykitchen@sbcglobal.net"/>

</NewCustomers>
'
;

INSERT INTO Customers (EmailAddress, Password, FirstName, LastName)
Values(
@NewCustomers
)
GO

,对于v_ucla,v_ucsb和v_ucsd同样如此。

当前结果:

enter image description here

但是,为了使比较更加直观,我想显示维恩图中的百分比 而不是设置大小。是否可以通过venn2中的某些功能来做到这一点?

例如,第一个情节将替换为:

enter image description here

我现在唯一想到的替代方法是自己进行标准化,然后将子集大小输入venn2函数而不是集合中,但我希望有一种更聪明的方法来实现

2 个答案:

答案 0 :(得分:2)

有一个参数 subset_label_formatter ,用于控制使用函数打印的标签。

capture

enter image description here

参考:

1)Percentages in venn diagrams

2)Add parameter to allow formatting of labels of subset sizes

答案 1 :(得分:2)

## 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