Как маркировать диаграммы Венна в процентах от заданных размеров в 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, а не в наборы, но я надеялся на более разумный способ сделать это
2 ответа
Есть аргумент 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%}")
Ref:
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%}" + ")"
)