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

matplotlib scatter, pull data from column, only show newest data point

如何从 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,文件不包含 header。第 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,

eachLine.split(',') returns 像这样的列表(最后一个空元素是 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])