2017-01-22 3 views
0

Я пытаюсь построить график, но невозможно правильно прочитать данные в текстовой форме: я получаю сообщение «Ошибка значения: невозможно преобразовать строку в float» ,Ошибка значения: numpy.loadtxt не удалось преобразовать строку в float

from matplotlib import pyplot as plt 
import numpy as np 

y,x = np.loadtxt('C:\\Users\\Sarah\\Downloads\\XRDdata.txt', unpack = True, delimiter = ';') 

plt.plot(x,y) 

plt.title('Diffractogramme de la substance KNO3') 
plt.ylabel('Intensité (u.a.)') 
plt.xlabel('Angle 2θ (°)') 

plt.show() 

Мои данные выглядит следующим образом:

19.04;24.5  
19.37;11.57  
23.57;100  
23.84;55.4  
27.74;1.7  
29.06;5.69  
29.44;65.53  
32.38;33.95  
32.44;7.54  
33.09;19.97  
33.68;36.61  
33.87;48.58  
34.06;24.59  
37.35;8.61  
38.01;4.57  
38.63;9.22  
39.32;2.83  
40.74;1.59  
41.2;52.8  
41.85;25.27  
43.71;11.8  
44.18;21.33  
45.22;2.31  
46.64;21.82  
46.79;9.81  
47.02;7.97  
48.22;2.96  
48.8;1.97  
51.62;1.67  
51.86;3.78  
etc. 

Как я могу заставить его работать? Благодарим вас за рассмотрение моих проблем с этой программой.

+0

возможно, плохие данные где-то. Для получения дополнительной справки дайте ссылку на весь файл. –

+0

Если вы попытаетесь загрузить только данные, которые вы предоставили в вопросе, он отлично работает. Поэтому причина ошибки должна быть где-то еще в файле данных, где у вас отсутствуют значения или верхний или нижний колонтитул, который не соответствует структуре данных '; '. Вы можете попытаться предоставить полные данные для тех, кто может проверить, указав ссылку на нее (возможно, загрузите ее на сайт pastebin.com или аналогичный). Вы также можете поэкспериментировать с ['np.genfromtxt'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html), который предоставляет гораздо больше опций, чем' loadtxt'. – ImportanceOfBeingErnest

+0

Существует одна проблема, не связанная с ошибкой: 'y, x = np.loadtxt (..., unpack = True, ...)' читает первый столбец в 'y', а второй - в' x', поэтому вы интенсивность смешивания с углом. Вместо этого используйте 'x, y = np.loadtxt ...'. – ImportanceOfBeingErnest

ответ

0

Просто держать этот вопрос не без ответа:

Проблема возникает из-за того, что у вас есть строка, содержащая много белых пространств (строка 64 в данном случае) в ваших данных.

enter image description here

Один из вариантов, конечно, вручную удалить их.
Другой вариант - использовать np.genfromtxt() вместо np.loadtxt().

x,y = np.genfromtxt('XRDdata.txt', unpack = True, delimiter = ';') 
Смежные вопросы