刷新课堂内的情节

时间:2019-07-09 20:39:39

标签: python matplotlib

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

每次我们获取新数据时,都会执行TestApp类内部的函数tickPrice。在此类的内部,我可以绘制和更新数据。

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)

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

1 个答案:

答案 0 :(得分:0)

不能100%地确定这是否是问题,而看不到其余的代码(例如,导入,正在调用的实际语句等),但是您在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()

显示正确吗?如果没有,则说明配置有问题。