2015-06-18 2 views
0

Я абсолютный начинающий python, который хочет/должен программировать скрипт веб-граббера для извлечения данных с веб-страницы прогноза погоды, чтобы построить его ,Python plot for beginners - ValueError: x и y должны иметь одно и то же первое измерение (код внутри)

я сделал raw_input так, чтобы люди могли выбрать город, из которого они хотят видеть детали погоды нарисованы, вот соответствующая для сюжета:

import os 
import matplotlib.pyplot as plt 
from datetime import datetime 

path = "data\\" 
names = os.listdir(path) 

namelist=[] 
for element in names: 
    element = element[:-4] 
    namelist.append(element) 

print namelist 


while True:             
    nennDenOrt = raw_input("tell me the name of your city\n") 
    if nennDenOrt in namelist: 
     print "here's your weather: " 

    temp = [] 
    relfeuc = [] 
    ns = [] 
    sonne = [] 
    timestamps = [] 
    with open(path + nennDenOrt + ".dat", "r") as infile: 
     for line in infile: 
      line = line.strip() # remove whitespaces newlines etc 
      data = line.split(",") 
      temp.append[2] 
      relfeuc.append[3] 
      ns.append[4] 
      sonne.append(data[5]) 
      print data[0] 
      actual_time = datetime.strptime(str(data[0]),"%Y-%m-%d %H-%M-%S") 

      timestamps.append(actual_time) 
      print data 


    plt.figure(1)    # the first figure 
    plt.title("Ihr Wetter für " + nennDenOrt + " von " + timestamps[0] + " bis " + timestamps[1]) 

    plt.subplot(221)    
    plt.plot(timestamps,temp) 
    plt.xlabel('Zeit') 
    plt.ylabel('°C') 

...

данные, которые я использую для участков находится внутри * .dat и выглядит следующим образом:

2015-06-17 18-38-30,1184,12.9,68,0.0,45

2015-06-17 18-38 -33,1184,12,9,68,0,0,45

2015-06-17 18-38-36,1184,12.9,68,0.0,45

2015-06-17 18-38-40,1184,12.9,68,0.0,45 . ..

(время [0] будет ось х, а остальные 4 значения будут каждый по оси у 4-х различных участков.)

Я получаю сообщение об ошибке и не знать, как решить проблему:

plt.plot(timestamps,temp) 
    File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\pyplot.py", line 2987, in plot 
    ret = ax.plot(*args, **kwargs) 
    File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 4137, in plot 
    for line in self._get_lines(*args, **kwargs): 
    File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 317, in _grab_next_args 
    for seg in self._plot_args(remaining, kwargs): 
    File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 295, in _plot_args 
    x, y = self._xy_from_xy(x, y) 
    File "C:\Python27\ArcGIS10.2\lib\site-packages\matplotlib\axes.py", line 237, in _xy_from_xy 
    raise ValueError("x and y must have same first dimension") 
ValueError: x and y must have same first dimension 

Возможно, некоторые из вам, что делать? Заранее большое спасибо !

+0

только что понял, что у меня действительно нет плана, что я здесь делаю. забыл заполнить другие списки, которые я только что сделал: с открытым (путь + nennDenOrt + ".dat", "r") как infile: для строки в infile: line = line.strip() # удалить пробелы newlines и т. д. data = line.split (",") temp.append [2] relfeuc.append [3] ns.append [4] sonne.append (данные [5]) ----- но ошибка Сообщения продолжаются:/ – goatastic

+0

Пожалуйста, добавьте другие детали для заполнения на вопрос, как обновление –

+0

'temp.append [2]' неверно. append - это метод =>, поэтому вам нужны скобки вместо квадратных скобок => temp.append (2) 'или' temp.append (data [2]) '... то же самое для' relfeuc.append [3] ' и 'ns.append [4]' –

ответ

0

Вы используете этот код -

plt.plot(timestamps,temp) 

Но нигде в коде вы даете какое-либо значение для temp переменной, не вы имеете в виду использовать sonne переменную вместо? Как -

plt.plot(timestamps,sonne) 

Код ниже тоже неправильно -

temp.append[2] 
relfeuc.append[3] 
ns.append[4] 

Я не думаю, что temp или relfeuc имеют свойство, как append, которое subscriptable. Вам нужно сделать -

temp.append(data[2]) 
relfeuc.append(data[3]) 
ns.append(data[4]) 
+0

извините, это то, что я только что понял после публикации (несколько раз редактировал код и размещал неправильную версию), im давал значения для temp, sonne, ns, .. как и все списки, в комментарии. но код еще не работает.при всех добавленных значениях новый ErrorMessage: строка 34, в temp.append [2] ТипError: объект 'builtin_function_or_method' не имеет атрибута '__getitem__' - вы знаете, что это значит? Спасибо за ваш комментарий ! – goatastic

+0

Можете ли вы вставить код в quesiton, отредактировав его, щелкнув ссылку «edit» в нижней части вопроса? –

+0

Извините, я его отредактировал. – goatastic

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