gpt4 book ai didi

python - 在不传入 "object"的情况下,pyplot 函数(show、savefig 等)如何工作?

转载 作者:行者123 更新时间:2023-12-01 02:54:15 25 4
gpt4 key购买 nike

pyplot 函数(例如 show()savefig())如何不需要“绘图对象”来工作?

例如以下code有效,但不知何故,我希望使用文件处理程序或将“绘图对象”传递到 plt.show()plot.savefig("venn3.pdf") 中。

from matplotlib import pyplot as plt
from matplotlib_venn import venn3, venn3_circles

# Subset sizes
s = (2,3,4,3,1,0.5,4)

v = venn3(subsets=s, set_labels=('A', 'B', 'C'))

# Subset labels
v.get_label_by_id('100').set_text('Abc')
v.get_label_by_id('010').set_text('aBc')
v.get_label_by_id('110').set_text('ABc')
v.get_label_by_id('001').set_text('Abc')
v.get_label_by_id('101').set_text('aBc')
v.get_label_by_id('011').set_text('ABc')
v.get_label_by_id('111').set_text('ABC')

# Subset colors
v.get_patch_by_id('100').set_color('c')
v.get_patch_by_id('010').set_color('#993333')
v.get_patch_by_id('110').set_color('blue')

# Subset alphas
v.get_patch_by_id('101').set_alpha(0.4)
v.get_patch_by_id('011').set_alpha(1.0)
v.get_patch_by_id('111').set_alpha(0.7)

# Border styles
c = venn3_circles(subsets=s, linestyle='solid')
c[0].set_ls('dotted') # Line style
c[1].set_ls('dashed')
c[2].set_lw(1.0) # Line width

plt.show() # For show() to work without using variable v seems counter-intuitive to me.
plt.savefig("venn3.pdf") # For savefig() to work without using variable v seems counter-intuitive to me.

2 [ ]

最佳答案

matplotlib.pyplot 通常称为“状态机”。这意味着它提供的函数根据 pyplot 的内部状态执行某些操作。

在您的代码中,您创建了一个图形并将其存储为对象; pyplot 知道它有一个图形。

如果您随后调用其他命令,则假定它们适用于之前创建的图形,例如 plt.savefig

plt.show() 适用于所有先前创建的图形(所有图形都会显示)。

关于python - 在不传入 "object"的情况下,pyplot 函数(show、savefig 等)如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com