如何从csv文件的第4列和第5列中提取数据?另外,我如何只显示最新的数据点?旧点可以消失。
以下是我到目前为止所提供的csv文件示例。
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import time
fig = plt.figure()
ax1 = fig.add_subplot(1,1,1)
def animate(i):
pullData = open("sampleText.csv","r").read()
dataArray = pullData.split('\n')
xar = []
yar = []
for eachLine in dataArray:
if len(eachLine)>1:
x,y = eachLine.split(',')
xar.append(int(x))
yar.append(int(y))
ax1.scatter(xar,yar)
ax1.set_xlim([-100, 100])
ax1.set_xlabel('X')
ax1.set_ylim([-100, 100])
ax1.set_ylabel('Y')
ani = animation.FuncAnimation(fig, animate, interval=100)
plt.show()
示例CSV,文件不包含标题。第4列是'x',5是'y'。
1,2,54,-34,54,23,65,
2,3,54,-34,-98,12,43,
3,6,54,34,56,76,89,
87,90,54,34,23,43,98,
44,98,54,-34,65,34,23,
23,79,54,34,-98,23,12,
9,3,54,34,65,34,32,
答案 0 :(得分:1)
eachLine.split(',')
返回一个这样的列表(最后一个空是csv的最后一个逗号):
['1', '2', '54', '-34', '54', '23', '65', '']
但那已经是一个清单了!请注意最后一个元素是''
。
然后改变了:
x,y = eachLine.split(',')
xar.append(int(x))
yar.append(int(y))
为此:
data = eachLine.split(',')
xar.append(int(data[-3]))
yar.append(int(data[-2]))
最后绘制最后一点,迭代dataArray,因此数据是csv的最后一行。
pullData = open("sampleText.csv","r").read()
dataArray = pullData.split('\n')
for eachLine in dataArray:
if len(eachLine)>1:
data = eachLine.split(',')
# In this example data is: ['9', '3', '54', '34', '65', '34', '32', '']
plt.scatter(data[-3],data[-2])
plt.xlim([-100, 100])
plt.ylim([-100, 100])