Как мне настроить границы и цвет фона моего сюжета matplotlib-venn? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь настроить область рисунка график Венна с помощью метода plt.figure, но не могу получить ожидаемые результаты.

Я пытаюсь создать черная рамка и белый фон на графике, но изображение по-прежнему получается прозрачным без рамки.

Я подозреваю, что в моем коде что-то не так, как в базисе c, но любые указатели приветствуются. Вот мой код.

from matplotlib import pyplot as plt
from matplotlib_venn import venn2, venn2_circles 

# Call 2 group Venn diagram
v = venn2(subsets = (10, 0, 5), set_labels = ('Euler', 'Venn'))
c = venn2_circles(subsets=(10,0,5), linestyle='dashed')

# Format
c[0].set_lw(2.0)
c[0].set_ls('dotted')
c[0].set_alpha(1)
c[0].set_color('#a6cee3')
c[1].set_lw(2.0)
c[1].set_ls('dotted')
c[1].set_alpha(1)
c[1].set_color('#b2df8a')

# Labels
plt.title("Diagrams")
for idx, subset in enumerate(v.subset_labels):
    v.subset_labels[idx].set_visible(False)

# Figure
plt.figure(linewidth=10, edgecolor="black", facecolor="white")
plt.show()

1 Ответ

0 голосов
/ 29 января 2020

Вам необходимо вызвать plt.figure(), прежде чем вызывать любую функцию рисования. Итак, перед вызовом v = venn2(....

plt.figure() создает новую область для рисования или построения чего-либо и может обрабатывать множество параметров. Если вы не вызываете plt.figure() или какую-либо эквивалентную функцию, matplotlib создает значение по умолчанию figure. И когда вы позвоните plt.figure() позже, matplotlib начнет новый пустой figure. Обычно matplotlib покажет вам два windows: первый с настройками по умолчанию figure, а второй без графика.

Полный пример, немного переписанный для использования циклов, будет выглядеть так: :

from matplotlib import pyplot as plt
from matplotlib_venn import venn2, venn2_circles


plt.figure(linewidth=10, edgecolor="black", facecolor="white")

# Call 2 group Venn diagram
v = venn2(subsets=(10, 0, 5), set_labels=('Euler', 'Venn'))
circles = venn2_circles(subsets=(10, 0, 5), linestyle='dashed')

# circle format
for circle, color in zip(circles, ['#a6cee3', '#b2df8a']):
    circle.set_lw(2.0)
    circle.set_ls('dotted')
    circle.set_alpha(1)
    circle.set_color(color)

# hide unwanted labels
for label in v.subset_labels:
    label.set_visible(False)

plt.title("Diagrams")
plt.show()
...