首页 > 解决方案 > 课堂内情节刷新

问题描述

我正在测试交互式经纪人 api,我试图在其中实时绘制一些日期。

每次我们获得新数据时,tickPrice都会执行 TestApp 类中的函数。在这个类中,我可以绘制和更新数据。

class TestApp(EWrapper, EClient, Plotter):

    def __init__(self):
        EClient.__init__(self, self)

    def tickPrice(self, some_parameters):

        price = we_have_the_new_price

        # to plot the first time 
        if(self.boot_plot == False):
            self.boot_plot = True
            self.plotthing()

        else:
            print('Animate')
            self.updating()

绘图类按以下方式定义:

class Plotter(object):

    fig = None
    sp = None

    def plotthing(self):
        print('plotting for the first time.')
        self.fig = plt.figure()
        self.sp = self.fig.add_subplot(111)
        self.sp.plot(self.price, 'o-')
        self.data = np.random.rand(10)
        plt.show(block = False)

    def updating(self):
        print('updating')
        self.sp.cla();
        self.sp.plot(price, 'o-')
        plt.show(block = False)

但是,当我运行此代码时,什么也没有发生,即,我看不到任何图像。有谁知道为什么?

标签: pythonmatplotlib

解决方案


在没有看到其余代码(例如导入、您正在调用的实际语句等)的情况下,不能 100% 确定这是否是问题,但是您的 def 中有一个错字updating

    def updating(self):
        print('updating')
        self.sp.cla();
        self.sp.plot(price, 'o-')
        plt.show(block = False)

plot行应该是self.sp.plot(self.price, 'o-'),对吗?

另一个明显的答案是你的 matplotlib 后端的环境/设置有问题。如果你只是做一个简单的情节:

import matplotlib.pyplot as plt

plt.plot((0,1), (0,1))
plt.show()

这是否正确显示?如果没有,你有一个配置问题。


推荐阅读