如何用 python 中的集合大小百分比标记维恩图?
How to label Venn diagrams with percentages of set sizes in python?
我正在使用 matplotlib_venn.venn2 函数在一个图中绘制四个不同的维恩图。
我对函数子集参数的输入是字符串集:
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 也类似。
当前结果:
但是,为了使比较更直观,我想在维恩图 中显示百分比,而不是设置大小。是否可以通过 venn2 中的某些功能来做到这一点?
例如,第一个图将替换为:
我现在能想到的唯一选择是以某种方式自己进行归一化,然后将子集大小输入 venn2 函数,而不是集合,但我希望有一种更聪明的方法来做到这一点
有一个参数 subset_label_formatter 控制使用函数打印的标签。
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: f"{(x/total):1.0%}"
)
参考:
1)Percentages in venn diagrams
2)Add parameter to allow formatting of labels of subset sizes
## 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%}" + ")"
)
我正在使用 matplotlib_venn.venn2 函数在一个图中绘制四个不同的维恩图。
我对函数子集参数的输入是字符串集:
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 也类似。
当前结果:
但是,为了使比较更直观,我想在维恩图 中显示百分比,而不是设置大小。是否可以通过 venn2 中的某些功能来做到这一点?
例如,第一个图将替换为:
我现在能想到的唯一选择是以某种方式自己进行归一化,然后将子集大小输入 venn2 函数,而不是集合,但我希望有一种更聪明的方法来做到这一点
有一个参数 subset_label_formatter 控制使用函数打印的标签。
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: f"{(x/total):1.0%}"
)
参考:
1)Percentages in venn diagrams
2)Add parameter to allow formatting of labels of subset sizes
## 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%}" + ")"
)