从文本文件绘制一串数字



我有一个文本文件(m.txt),格式为:

    4.52987812069
    3.71367858211
    4.50621674483
    5.17260331988
    5.06400394036
    etc

我想用matplotlib来绘制这些,但是当我做时,m.txt中的所有的数字在x轴上被打印为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()
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, ylabelaxis调用移出循环,因为不需要在每次迭代中设置标签和轴属性,您可以只做一次。

您必须传递一系列值来绘制。

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()

如果您使用numpy.loadtxtnumpy.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()

相关内容

  • 没有找到相关文章

最新更新