1

通过遵循 matplotlib-venn README 中的命令,我可以在示例中生成初始图。但是,当我更改维恩图的设置(标签文本等)时,我无法弄清楚如何重新绘制图形。跑步:

%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()

但我真的感觉在黑暗中。我觉得我缺少一些非常基本%matplotlib的东西或matplotlib情节功能,但我还没有在网上找到答案。

如何在 Jupyter 中再次绘制这个数字?

4

2 回答 2

6

如果您使用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

在此处输入图像描述

于 2017-06-06T10:34:11.867 回答
1

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

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

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

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

在此处输入图像描述

于 2017-06-06T11:14:56.840 回答