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


person Ambareesh    schedule 25.11.2018    source источник


Ответы (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%}"
)

введите описание изображения здесь

Ссылка:

1) Проценты на диаграммах Венна

2) Добавить параметр, чтобы разрешить форматирование меток размеров подмножества

person Ambareesh    schedule 26.11.2018
comment
Привет Чувак. Есть ли способ скрыть метку подмножества с помощью аргумента subset_label_formatter? - person steven; 31.01.2019
comment
Мне удалось скрыть ярлыки, выполнив: subset_label_formatter=lambda x:f"" - person Coder3110; 08.10.2020

## 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%}" + ")"

)

введите описание изображения здесь

person J. Ceron    schedule 05.02.2021