2013-09-12 5 views
0

Невозможно получить мое простое намерение построить 2 списка рабочих. Длина 1dim-списков одинакова, а значения list - простые поплавки с просто цифрами после запятой. Длинные имена переменных могут быть подозрительными, поскольку я исследовал некоторые случаи, когда pyplot не нравился определенным именам. Во всяком случае, код выглядит следующим образом (сам список печатается + copypasted мной): сообщениеОшибка Python Pyplot: «ValueError: x и y должны иметь такое же первое измерение»

countErrXPercent_allX_ABC = [0, 0.0, 0.0, 4.55, 5.41, 15.69, 23.44, 29.27, 32.05, 47.95, 48.0, 64.91, 43.94, 57.35, 52.27, 70.59, 79.55, 73.53, 77.14, 64.52, 77.78, 80.0, 82.61, 72.0, 86.96, 74.07, 77.78, 66.67, 60.0, 55.56, 80.0, 90.91, 77.78, 75.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, -1.0, 100.0, 100.0] 
countErrYPercent_allY_ABC = [0, -1.0, 0.0, 10.0, 12.5, 22.22, 43.59, 48.61, 53.42, 67.37, 71.83, 78.65, 74.32, 72.88, 68.97, 82.69, 88.37, 77.27, 84.62, 85.0, 86.67, 90.0, 93.94, 83.33, 87.5, 80.95, 83.33, 92.86, 83.33, 57.14, 81.82, 100.0, 75.0, 100.0, 100.0, 60.0, 100.0, 50.0, 83.33, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0, 100.0] 
P.plot(countErrXPercent_allX_ABC, '.', 'b', label='aErr < bErr') 
P.plot(countErrYPercent_allY_ABC, '.', 'r', label='aErr < cErr') 
P.show() 

Ошибки:

Traceback (most recent call last): 
File "xyz.py", line 169, in errClassesX 
P.plot(countErrXPercent_allX_ABC, '.', 'b', label='aErr < bErr') 
File "C:\Program Files (x86)\Python\lib\site-packages\matplotlib\pyplot.py", line 2817, in plot 
ret = ax.plot(*args, **kwargs) 
File "C:\Program Files (x86)\Python\lib\site-packages\matplotlib\axes.py", line 3996, in plot 
for line in self._get_lines(*args, **kwargs): 
File "C:\Program Files (x86)\Python\lib\site-packages\matplotlib\axes.py", line 330, in _grab_next_args 
for seg in self._plot_args(remaining, kwargs): 
File "C:\Program Files (x86)\Python\lib\site-packages\matplotlib\axes.py", line 308, in _plot_args 
x, y = self._xy_from_xy(x, y) 
File "C:\Program Files (x86)\Python\lib\site-packages\matplotlib\axes.py", line 248, in _xy_from_xy 
raise ValueError("x and y must have same first dimension") 
ValueError: x and y must have same first dimension 

Запутанного Дело в том, что при печати этих списков + copypasting его в новый пустой файл (с новыми переменными 'l' и 'k', pyplot работает. Я попытался построить дубликаты (команда copy.copy()) списков и присвоить новые имена varNames, но, к сожалению, не удалось. Поэтому любая идея высоко оценивается.

ответ

1

Вы являетесь fomatti нг строку форматирования неправильно, он должен быть:

plt.plot(countErrXPercent_allX_ABC, '.b', label='aErr < bErr') 

Как вы его он пытается построить '.' против вашего списка.

Также принято на импорт pyplotplt, а не P.

import matplotlib.pyplot as plt 

Выполнение этого кода сделает ваш код более легким для чтения другими и сделает код повторного использования примера более удобным для вас.

+0

Ой, я не обращал на это внимания, так как я принял его из другого кода, который, как я предполагал, был правильным. Любая идея, почему метки не видны? – dax5

+0

, потому что вы не вызывали 'plt.legend()' – tacaswell

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