Как маркировать диаграммы Венна в процентах от заданных размеров в 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%}" + ")"

)

Другие вопросы по тегам