cdkeycdma 发表于 2020-9-6 23:03:35

请问如何实现实时可视化数据绘图的功能?

例如:
import random   
while True:
   a=random.randint(1,1500)
   
每次生成一个随机数,然后把这个随机数画出来。

Twilight6 发表于 2020-9-6 23:15:20



网上抄的代码,改动了下,应该是你想要的效果吧?

X 轴就是代表随机数的序号,从 0开始 ,Y 轴是代表随机数的值

import random
import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.gca()

X = []
i = 0
while True:
    X.append(random.randint(1, 1500))
    ax.scatter(i, X, c='r')
    plt.pause(0.4)
    i += 1

cdkeycdma 发表于 2020-9-7 08:41:22

Twilight6 发表于 2020-9-6 23:15
网上抄的代码,改动了下,应该是你想要的效果吧?

X 轴就是代表随机数的序号,从 0开始 ,Y 轴是 ...

多谢,这个图的X轴是变化的,我想要的效果是先把X轴刻度一次性画出来,比如有200个刻度,然后每生成一个y值,就在这个刻度上画个点,然后把点与点之间用折线连接。

Twilight6 发表于 2020-9-7 09:31:59

cdkeycdma 发表于 2020-9-7 08:41
多谢,这个图的X轴是变化的,我想要的效果是先把X轴刻度一次性画出来,比如有200个刻度,然后每生成一个y ...



你都设置为 True 死循环了,没有规定生成多少数,怎么可能可以知道 X 轴最大值是多少?这是无限生成下去的

bonst 发表于 2020-9-7 10:33:20

条件可以改成a<1500

bonst 发表于 2020-9-7 11:45:21

你可以修改为这样import random
import matplotlib.pyplot as plt

fig = plt.figure()
ax = plt.gca()

x = []
i = 0

while i < 500:
    x.append(random.randint(1,1500))
    ax.scatter(i, x, c = 'b', s = i/10)
    plt.pause(0.2)
    plt.xlim()
    plt.ylim()
    plt.title('Scatter Graph')
    plt.grid(True)
    i += 1

cdkeycdma 发表于 2020-9-7 12:23:48

bonst 发表于 2020-9-7 11:45
你可以修改为这样

要的便是这种效果,请问如何把点与点之间用线连起来形成折线图。

bonst 发表于 2020-9-7 12:44:10

这么多的点你确定要连接起来,完全看不清楚的

cdkeycdma 发表于 2020-9-7 14:32:54

bonst 发表于 2020-9-7 12:44
这么多的点你确定要连接起来,完全看不清楚的


是的,我想现实这种电磁波的效果

bonst 发表于 2020-9-7 14:56:00

那你试试这个函数np.exp(-t) * np.cos(4*np.pi*t),这个倒是跟电磁波比较像
页: [1]
查看完整版本: 请问如何实现实时可视化数据绘图的功能?