2015-03-01 1 views
1

У меня есть два 100x1 массивов, которые я рисую друг против друга. Я могу построить их достаточно легко и получить ожидаемый результат, однако, когда я пытаюсь добавить любые погрешности к сюжету я получаю сообщение об ошибкеЗадание matplotlib errorbars дает AssertionError assert vertices.ndim == 2

User/lib/python2.7/site-packages/matplotlib/path.py", line 147, in__init__ 
    assert vertices.ndim == 2 
    AssertionError 

Моего основной код просто:

xe = numpy.ones((100,1)) 
    pyplot.figure() 
    pyplot.scatter(frac_K,frac_en) 
    pyplot.errorbar(frac_K,frac_en, xerr = xe, yerr =xe, linestyle = 'none') 

    pyplot.show() 

frac_K и frac_en определены ранее в сценарии как просто 100x1 массивов. т.е.

print frac_K 
    [[-0.  ] 
    [-0.00180161] 
    [-0.00452353] 
    [-0.00815248] 
    [-0.01267089] 
    ... etc. 

Любые указания относительно того, куда я иду, будут весьма полезны.

ответ

1

С помощью numpy.ones((100,1)) вы создаете 2D-массив (один с размерами 100 х 1). Вы можете позвонить по телефону .flatten() по телефону xe, чтобы превратить его в 1D-массив или создать его как 1D.

xe = numpy.ones((100,1)).flatten() 

или ...

xe = numpy.ones(100) 

Это на самом деле именно то, что assert vertices.ndim == 2 говорит вам, хотя и в несколько загадочным образом. например

>>> xe = numpy.ones((100,1)) 
>>> xe.ndim 
2 

>>> xe = numpy.ones(100) 
>>> xe.ndim 
1 

Свойство ndim является аббревиатурой «число измерений».

+0

Отлично! Спасибо! – user1887919