【问题标题】:Plotting Venn diagram in Jupyter after changes (matplotlib-venn)更改后在 Jupyter 中绘制维恩图 (matplotlib-venn)
【发布时间】:2017-06-06 09:28:33
【问题描述】:

按照 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()

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

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

【问题讨论】:

    标签: python matplotlib plot jupyter matplotlib-venn


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-03-28
        • 1970-01-01
        • 1970-01-01
        • 2013-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多