2015-01-06 1 views
0

Я пытаюсь построить некоторые данные ряда дат. Как только я добавлю даты, я получаю сообщение об ошибке. Он отлично работает, если я их заменю цифрами. Что я делаю не так?график даты серии с wxpython и matplotlib - x и y должны иметь такое же первое измерение

Мой код:

import numpy 
import matplotlib 
matplotlib.use('WXAgg') 

from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas 
from matplotlib.backends.backend_wx import NavigationToolbar2Wx 
from matplotlib.figure import Figure 

import wx 

class CanvasPanel(wx.Panel): 
    def __init__(self, parent): 
     wx.Panel.__init__(self, parent) 
     self.figure = Figure() 
     self.axes = self.figure.add_subplot(111) 
     self.canvas = FigureCanvas(self, -1, self.figure) 
     self.sizer = wx.BoxSizer(wx.VERTICAL) 
     self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW) 
     self.SetSizer(self.sizer) 
     self.Fit() 



    def draw(self): 
     t = ['1/1/2013','1/2/2013','1/3/2013','1/4/2013','1/5/2013','1/6/2013','1/7/2013','1/8/2013','1/9/2013'] 
     s = [100,121,89,111,343,211,151,232,122,343] 
     self.axes.plot(t, s) 
     self.tittle1 = wx.StaticText(self, label="My Label") 

if __name__ == "__main__": 
    app = wx.PySimpleApp() 
    fr = wx.Frame(None, title='My Data') 
    panel = CanvasPanel(fr) 
    panel.draw() 
    fr.Show() 
    app.MainLoop() 

Ошибка:

ValueError: x and y must have same first dimension 
+0

Если я не могу рассчитывать у вас есть 1 меньше строки даты, чем число в 's'. – daveydave400

ответ

1
In [1]: t = ['1/1/2013','1/2/2013','1/3/2013','1/4/2013','1/5/2013','1/6/2013','1/7/2013','1/8/2013','1/9/2013'] 

In [2]: s = [100,121,89,111,343,211,151,232,122,343] 

In [3]: len(t) 
Out[3]: 9 

In [4]: len(s) 
Out[4]: 10 
+0

Ха глупо меня! Ты прав. Я получаю 'ValueError: недействительный литерал для float(): 1/1/2013', теперь я исправил. Должен ли я спрашивать об этом в новом вопросе или у вас есть понимание? – user2242044

+0

Matplotlib может обрабатывать даты особым образом (обычно как объекты datetime). Вы должны иметь возможность Google, что вам нужно, но вот начало: http://matplotlib.org/examples/pylab_examples/date_demo_convert.html – daveydave400

+0

И не делайте ничего с датами с нуля. В стандартном библиотеке 'datetime' существует множество функций для извлечения информации о дате из строки (strptime) и форматирования объектов datetime в виде строк (strftime). Но утилиты matplotlib могут иметь некоторые из этих встроенных функций, чтобы сделать их более легкими, поэтому осмотритесь и сделайте некоторое исследование в первую очередь. – daveydave400

Смежные вопросы