2015-05-19 2 views
0

У меня есть текстовый файл (m.txt) с номерами в виде:Plotting строки чисел из текстового файла

4.52987812069 
    3.71367858211 
    4.50621674483 
    5.17260331988 
    5.06400394036 
    etc 

Я хочу, чтобы построить их с помощью matplotlib однако, когда я всех чисел в m.txt прибудет напечатан на 0 по оси х. Я, очевидно, хочу, чтобы каждое значение в m печаталось вдоль оси x, начиная с 0 и заканчивая len(m) - 1.

Я знаю, что я использую цикл for, но я не могу заставить его правильно выводить. Спасибо за вашу помощь. Вот мой код:

import matplotlib.pyplot as plt 
with open("m.txt") as m: 
    for line in m: 
     m_float = map(float,line.split()) 
     plt.plot(m_float,'bo') 
     plt.ylabel('FLOC - % of line') 
     plt.xlabel('Sample Number') 
     plt.axis([-10,10,0,5]) 
    plt.show() 

ответ

0
import matplotlib.pyplot as plt 
with open("m.txt") as m: 
    for index, line in enumerate(m): 
     m_float = map(float,line.strip()) 
     plt.plot(index, m_float,'bo') 

    plt.ylabel('FLOC - % of line') 
    plt.xlabel('Sample Number') 
    plt.axis([-10,10,0,5]) 
    plt.show() 

я заменил split с strip для ясности. Обратите внимание, что я добавил enumerate, чтобы получить номера со своими индексами. Позже я передаю их plt.plot. Я перешел из цикла xlabel, ylabel и axis вызовов, потому что нет необходимости устанавливать метки и свойства осей на каждой итерации, вы можете сделать это только один раз.

+0

Спасибо, получил эту работу. Однако он работает только с .split(), а не с .strip(). С .strip() ему не нравится аргумент float. – AIREL

0

Вы должны передать серию значений в сюжет.

import matplotlib.pyplot as plt 
x=[] 
with open("m.txt") as m: 
    for line in m: 
     m_float = float(line.split()) 
    x.append(m_float) 

    plt.plot(x,'bo') 
    plt.ylabel('FLOC - % of line') 
    plt.xlabel('Sample Number') 
    plt.axis([-10,10,0,6]) 
    plt.show() 
0

если вы используете numpy.loadtxt или numpy.genfromtxt вы можете сделать это без цикла, например .:

import matplotlib.pyplot as plt 
import numpy as np 

m_float=np.loadtxt('m.txt') 

plt.plot(m_float,'bo') 
plt.ylabel('FLOC - % of line') 
plt.xlabel('Sample Number') 
plt.axis([-10,10,0,5]) 
plt.show() 
Смежные вопросы