matplotlib散点图,从列中提取数据,仅显示最新的数据点

时间:2017-02-04 00:21:52

标签: python csv matplotlib scatter

如何从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,

1 个答案:

答案 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])

single_point