[英]Python: Graphing and animating multiple iterations of the same graph with 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.