繁体   English   中英

到 plot 在 python 中多次迭代中同一图像上的图形

[英]to plot the graph on same image in multiple iterations in python

from sklearn.datasets import make_blobs
from matplotlib import pyplot
from pandas import DataFrame
# generate 2d classification dataset
X, y = make_blobs(n_samples=30, centers=2, n_features=2)
# scatter plot, dots colored by class value
df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
colors = {0:'red', 1:'blue'}
fig, ax = pyplot.subplots()
grouped = df.groupby('label')
for key, group in grouped:
    group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
pyplot.show()

import numpy as np
import time
import matplotlib.pyplot as plt
import math
MAT= df.to_numpy()
Iterate = len(MAT)
w0=1.0;w1=1.0;w2=2.0
change = True
#plt.ion()
while change == True:
  change = False
  for i in range(Iterate):
    arr=MAT[i:]
    if (arr[0][2]==1.0 and (w0+w1*arr[0][0]+w2*arr[0][1] < 0.0)):
      w0=w0 + 1.0;w1=w1+arr[0][0];w2=w2+arr[0][1]
      change = True
    if (arr[0][2]==0.0 and (w0+w1*arr[0][0]+w2*arr[0][1] >= 0.0)):
      w0=w0 - 1.0;w1=w1-arr[0][0];w2=w2-arr[0][1]
      change = True
    Intecept=-w0/w2;Slope=-w1/w2
    df = DataFrame(dict(x=X[:,0], y=X[:,1], label=y))
    X1=(X[:,0])
    Y1= (X[:,1])
    low1 = math.floor(min(X1))
    high1 = math.ceil(max(X1))
    low2 = math.floor(min(Y1))
    high2 = math.ceil(max(Y1))
    colors = {0:'red', 1:'blue'}
    fig, ax = pyplot.subplots()
    grouped = df.groupby('label')
    for key, group in grouped:
        group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, color=colors[key])
    plt.xlim(low1, high1), plt.ylim(low2,high2)
    axes = plt.gca()
    x_vals = np.array(axes.get_xlim())
    y_vals = Intecept + Slope * x_vals
    plt.plot(x_vals, y_vals, '--')
    plt.xlabel('x')
    plt.ylabel('y')
    pyplot.draw()
    time.sleep(0.05)
    plt.show()

我正在共享一个 python 代码,该代码正在执行二进制分类,结果显示在图表上,但我想要对单个图像进行更改。 iyt 基本上是感知器分类器。 在 while 循环中,我将我的分散图放在其中,然后在其中绘制我的线。

每次使用fig, ax = pyplot.subplots()都会在循环中创建一个新图形。 此外,在循环结束时,代码通过plt.show()停止。

您可以通过将fig, ax = pyplot.subplots()放在 while 循环之外,将 time.sleep time.sleep(0.05)plt.show()替换为plt.show(pause=False)plt.pause(0.05)并在循环之后添加一个 plt.show() 离开循环后也继续显示图形。

伪代码:

fig, ax = pyplot.subplots()
while keep_looping:
  for i in iterator:
    if criteria:
      keep_looping = False
    plt.plot(data)
    plt.show(block=False)
    plt.pause(0.05)
plt.show()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM