#python #matplotlib #lxml
#python #matplotlib #lxml
Вопрос:
the file.xml содержит следующую структуру данных:
<table>
<row>
<x>10</x>
<t>10:00</t>
</row>
<row>
<x>20</x>
<t>10:05</t>
</row>
</table>
У меня сотни пар x, t. Мне нужно построить график x против t.
Я был бы благодарен, если вы поможете мне решить проблему с помощью python и matplotlib.
Ответ №1:
import lxml.etree as ET
import matplotlib.pyplot as plt
text='''
<table>
<row>
<x>10</x>
<t>10:00</t>
</row>
<row>
<x>20</x>
<t>10:05</t>
</row>
</table>
'''
def convert_t(text):
a,b=map(float,t.split(':'))
return a b/60.0
doc=ET.fromstring(text)
x=[float(x) for x in doc.xpath('//x/text()')]
t=[convert_t(t) for t in doc.xpath('//t/text()')]
plt.plot(x,t)
plt.show()
- Приведенный выше код предполагает
10:05
, что это означает что-то вроде 10 минут, 5
секунд. Он преобразует это в число с плавающей запятой, используяconvert_t
. </table>
Было добавлено закрытие, чтобы сделать XML допустимым.