我正在尝试使用plt.figure方法自定义venn plot的图形区域,但无法获得预期的结果。
我试图在绘图上创建一个黑色边框和一个白色背景,但图像仍然是透明的,没有边框。
我怀疑我的代码遗漏了一些基本的东西,但如果有任何指示,我将不胜感激。这是我的代码。
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()发布于 2020-01-30 04:33:58
在调用任何绘图函数之前,需要先调用plt.figure()。所以,在调用v = venn2(...之前。
plt.figure()创建了一个新的区域来在上面绘制或绘制一些东西,并且可以处理许多选项。如果你不调用plt.figure()或者其他等价的函数,matplotlib会创建一个默认的figure。当您稍后调用plt.figure()时,matplotlib会启动一个新的空figure。通常,matplotlib会向您显示两个窗口:第一个窗口使用默认的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()https://stackoverflow.com/questions/59956899
复制相似问题