相关疑难解决方法(0)

如何使用matplotlib在while循环中实时绘图?

我试图使用OpenCV实时绘制来自摄像机的一些数据.但是,实时绘图(使用matplotlib)似乎不起作用.

我把这个问题分成了这个简单的例子:

fig = plt.figure()
plt.axis([0, 1000, 0, 1])

i = 0
x = list()
y = list()

while i < 1000:
    temp_y = np.random.random()
    x.append(i)
    y.append(temp_y)
    plt.scatter(i, temp_y)
    i += 1
    plt.show()
Run Code Online (Sandbox Code Playgroud)

我希望这个例子可以单独绘制1000个点.实际发生的是窗口弹出第一个点显示(确定),然后在填充图表的其余部分之前等待循环完成.

有什么想法,为什么我没有看到一次填充一个点?

python real-time matplotlib while-loop

211
推荐指数
11
解决办法
44万
查看次数

如何在matplotlib中更新图?

我在这里重新绘制数字时遇到问题.我允许用户在时间刻度(x轴)中指定单位,然后重新计算并调用此函数plots().我希望情节简单地更新,而不是在图中附加另一个情节.

def plots():
    global vlgaBuffSorted
    cntr()

    result = collections.defaultdict(list)
    for d in vlgaBuffSorted:
        result[d['event']].append(d)

    result_list = result.values()

    f = Figure()
    graph1 = f.add_subplot(211)
    graph2 = f.add_subplot(212,sharex=graph1)

    for item in result_list:
        tL = []
        vgsL = []
        vdsL = []
        isubL = []
        for dict in item:
            tL.append(dict['time'])
            vgsL.append(dict['vgs'])
            vdsL.append(dict['vds'])
            isubL.append(dict['isub'])
        graph1.plot(tL,vdsL,'bo',label='a')
        graph1.plot(tL,vgsL,'rp',label='b')
        graph2.plot(tL,isubL,'b-',label='c')

    plotCanvas = FigureCanvasTkAgg(f, pltFrame)
    toolbar = NavigationToolbar2TkAgg(plotCanvas, pltFrame)
    toolbar.pack(side=BOTTOM)
    plotCanvas.get_tk_widget().pack(side=TOP)
Run Code Online (Sandbox Code Playgroud)

python tkinter matplotlib

133
推荐指数
6
解决办法
30万
查看次数

将点添加到现有的 matplotlib 散点图

如何向现有图表添加点?直接的解决方案是绘制新的散点图,添加新数据。

ax.scatter(data[:,0], data[:,1], cmap = cmap, c = color_data)
ax.scatter(new_points_x, new_points_y, color='blue')
Run Code Online (Sandbox Code Playgroud)

但是如果我们想用新的颜色添加更多的点,就有一个问题:我们必须考虑所有以前添加的点。

如果我可以使用像这样的特殊功能,那就太好了

AddPoint(ax, new_point, color)
Run Code Online (Sandbox Code Playgroud)

我只想添加新颜色的新点。我不需要任何动画

python plot data-visualization matplotlib scatter-plot

11
推荐指数
2
解决办法
3万
查看次数

matplotlib 中 FuncAnimation 的手动时间循环控制

我正在寻找类似于带有 blit 的FuncAnimation 的东西,但不是让库在固定的时间步调用一个函数,我想在准备好时自己调用该函数。我不明白 matplotlib 对函数返回的轴做了什么来更新它们。我正在处理来自外部来源的实时数据,我希望刷新率与该数据同步。

python matplotlib

5
推荐指数
1
解决办法
451
查看次数

使用 MatPlotLib 绘制连续的数据流

我想使用 MatPlotLib 绘制图形,其中的图形随时间变化。在每个时间步,一个额外的数据点将被添加到图中。但是,应该只显示一个图形,其外观会随着时间的推移而演变。

在我的测试示例中,该图是一个简单的线性图 (y = x)。这是我尝试过的:

for i in range(100):
    x = range(i)
    y = range(i)
    plt.plot(x, y)
    plt.ion()
    plt.show()
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

但是,这里发生的是创建了多个窗口,因此在循环结束时我有 100 个窗口。另外,我注意到对于最近的窗口,它只是一个白色的窗口,并且情节只出现在下一步中。

所以,我的两个问题是:

1) 如何更改我的代码,以便只显示一个窗口,其内容会随着时间而变化?

2)如何更改我的代码,以便在最近的时间步长中,绘图实际显示在窗口上,而不是只显示一个白色窗口?

谢谢!

python matplotlib

2
推荐指数
1
解决办法
2万
查看次数

在pylab中重新初始化图

我是使用PyLab的新手。我想画点。但是我不想显示先前的点,即随着新点的出现,先前绘制的点将消失而新点将被绘制。我进行了很多搜索,但找不到如何重新初始化之间的绘图。我面临的问题是我可以使用plt.figure(f1.number)设置当前图形,但是在该图形上绘制点之后,它将永久更改。

python matplotlib

1
推荐指数
1
解决办法
5981
查看次数

numpy vstack投掷维度错误

我正在监视串口并尝试在Matplotlib到达时绘制数据.因为数据是以不规则的间隔到达的,所以我使用的方法来附加数据 - 类似于这个线程.

这是我的代码:

data = np.zeros(shape=(1,1), dtype=[('millis',float),('temperature_Celsius',float),('relative_humidity',float),('setpoint',float),('relay_status',float)])
print data # gives a 1-row, 5-element tuple: [[(0.0, 0.0, 0.0, 0.0, 0.0)]]

# append the new row
# throws error regarding array dimensions
data = np.vstack(( data, [(1,2,3,4,5)] ))
Run Code Online (Sandbox Code Playgroud)

我无法正确获得尺寸标注,因为我收到以下错误:

ValueError: all the input array dimensions except for the concatenation axis must match exactly
Run Code Online (Sandbox Code Playgroud)

请帮助识别语法错误.

在Python 2.6,Numpy 1.8,Windows 7上运行.

python numpy

1
推荐指数
1
解决办法
5070
查看次数