我有一个文本文件(m.txt)
,其格式为:
4.52987812069
3.71367858211
4.50621674483
5.17260331988
5.06400394036
etc
我想使用matplotlib
绘制这些图,但是当我 m.txt
中的所有时,x轴上的数字都会被打印出来。我显然希望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 :(得分: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
调用,因为不需要在每次迭代时设置标签和轴属性,只需执行一次。
答案 1 :(得分: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()
答案 2 :(得分: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()