更改后在 Jupyter 中绘制维恩图 (matplotlib-venn)

Plotting Venn diagram in Jupyter after changes (matplotlib-venn)

按照 matplotlib-venn 自述文件中的命令,我可以生成示例中的初始图。但是,当我更改维恩图的设置(标签文本等)时,我不知道如何重新绘制图形。 运行:

%matplotlib inline
from matplotlib_venn import venn3
v = venn3([set1, set2, set3], ('Set1', 'Set2', 'Set3'))

内嵌维恩图。然后我继续更改标签

v.get_label_by_id('100').set_text('Arbitrary1')

但我无法重新绘制图形。我试过了

# from matplotlib import pyplot as plt
plt.plot()
plt.plot(v)
v
v()

但我真的感觉在黑暗中徘徊。我觉得我遗漏了一些关于 %matplotlibmatplotlib 绘图功能的非常基本的东西,但我还没能在网上找到答案。

如何在 Jupyter 中再次绘制此图?

如果您使用 fig=plt.figure() 来存储对图形实例的引用,那么您将可以在以后的笔记本单元格中访问该图形。如果您不这样做,那么您将无法访问新单元格中的现有图形。

因此,设置标签后,您只需要再写一次fig即可再次显示图形。

这是一个工作示例:

单元格 1:

%matplotlib inline
from matplotlib_venn import venn3
import matplotlib.pyplot as plt
fig = plt.figure()
set1 = set(['A', 'B', 'C'])
set2 = set(['A', 'D', 'E'])
set3 = set(['A', 'F', 'B'])

v = venn3([set1, set2, set3], ('Set1', 'Set2', 'Set3'))

单元格 2:

v.get_label_by_id('100').set_text('Arbitrary1')
fig

在评估 jupyter 单元后,pyplot 状态机的状态丢失。因此在一个新的单元格中,pyplot 不知道之前创建的图形。

解决方案是在离开单元格之前获取对图形的引用。这是由

完成的
  • 将图形明确分配给变量 fig=plt.figure()
  • 将图形存储在单元格末尾的变量中,fig = plt.gcf()

在这两种情况下,只需键入 fig,您就会在后面的单元格中显示一个图形对象。 由于这是在 jupyter notebook 中使用 matplotlib 的一般情况,因此以下示例不考虑维恩图。