我正在测试交互式经纪人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)
但是,当我运行此代码时,什么也没有发生,即我看不到任何图像。有人知道为什么吗?
答案 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()
显示正确吗?如果没有,则说明配置有问题。