2013-08-09 3 views
1

я следующий массив данных:Круглая ошибка при построении

In [53]: data 
Out[53]: array([ 9.95000000e-05, 9.95000000e-05, 9.95000000e-05, 
     ... 
     ... 
     9.95000000e-05]) 

Когда я сюжет из него я получаю:

enter image description here

я ожидал бы участок, чтобы быть прямо линия с чем-то значимым на оси y. В чем причина такого поведения?

ответ

3

Проблема в том, что 9.95000000e-05 на самом деле 9.9500000000000006e-05 или 9.9499999999999979e-05 или какое-то близкое число, которое iPython округляет для ясности.

Matplotlib, однако, признает число в его полной точности, что в результате имеет неожиданное поведение.

Обходной путь или это округление числа до значений, представленных в iPython.

In [53]: round(data,7) 
Out[53]: array([ 9.95000000e-05, 9.95000000e-05, 9.95000000e-05, 
     ... 
     ... 
     ]) 

Который обеспечивает хороший сюжет:

In [54]: plot(round(data,7)) 

enter image description here

+1

Каким образом вы могли бы ответить на ваш вопрос так скоро? .. – NREZ

+1

@Alan +1, но вы должны опубликовать свой ответ в качестве сообщества Wiki –

+1

Я не согласен с @SaulloCastro. Оставляя ответ, как не-вики, это прекрасно. – tacaswell

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