Wss312 发表于 2020-4-21 10:07:23

为什么画完图像后用plt.close不能关闭?

我想让程序通过迭代,将每一个直线都画出来。可是需要一直手动关闭一个才能继续循环,怎么能够自动关闭窗口进行循环呢?

   fig1 = plt.figure(num=1,figsize=(8,5))       # 设置图的编号及大小
                  
    for i in range(5):
      X1 = X                  # 设置变量X1,X2
      X2 = X
      if t == 0:
            plt.scatter(X1,X2,c='b')      # 设置图的两个变量并根据t的不同将点分类
      else:
            plt.scatter(X1,X2,c='r')
    plt.xlim((-3.0,3.0))                  # 设置x轴的上下限
    plt.ylim((-3.0,3.0))                  # 设置y轴的上下限

    plt.title('Perceptron')         # 设置图的标题

    plt.xlabel("X1")                     # 给图标的横纵坐标命名

    plt.ylabel("X2")

   
    k1 = -W/W
    k2 = -W/W
   
    X1 = np.linspace(-3,3)               # 设置变量X1
    X2 = k1 * X1 + k2
   
    plt.plot(X1,X2, color='green',linewidth=1.5,linestyle="-")# 设置图的变量X1,X2以及颜色、宽度及图线的类型
    plt.show()
    plt.close(fig1)

会计的会怎么念 发表于 2020-4-21 10:39:22

你的for循环下画的是散点图,你的折线图不在for循环下啊
- 你是想把散点图和折线图画在一个绘图区域?
- 还是说你这段代码是在一个循环体内的?

Wss312 发表于 2020-4-21 10:43:49

会计的会怎么念 发表于 2020-4-21 10:39
你的for循环下画的是散点图,你的折线图不在for循环下啊
- 你是想把散点图和折线图画在一个绘图区域?
-...

画在一个区域,折线图通过迭代将散点图分开。我写的是在一个for循环内的

Wss312 发表于 2020-4-21 10:44:53

会计的会怎么念 发表于 2020-4-21 10:39
你的for循环下画的是散点图,你的折线图不在for循环下啊
- 你是想把散点图和折线图画在一个绘图区域?
-...

折线图和散点图不在一个循环内

suchocolate 发表于 2020-4-21 11:01:11

plt.show(block=False)

会计的会怎么念 发表于 2020-4-21 11:06:14

Wss312 发表于 2020-4-21 10:44
折线图和散点图不在一个循环内

我明白你什么意思了。
- 不知道你会不会matplot面向对象绘图的方法。
- 如果使用循环直接绘制的话,只能用pylot.subplot()来实例化绘图区域的方法

- 如果直接调用pyplot的绘图的API,就需要把你循环生成的数据分别存储,然后分别调用pyplot.plot()

Wss312 发表于 2020-4-21 11:40:00

会计的会怎么念 发表于 2020-4-21 11:06
我明白你什么意思了。
- 不知道你会不会matplot面向对象绘图的方法。
- 如果使用循环直接绘制的话,只 ...

这个还没有用过{:10_266:}学学
页: [1]
查看完整版本: 为什么画完图像后用plt.close不能关闭?