【问题标题】:matplotlib scatter, pull data from column, only show newest data pointmatplotlib scatter,从列中提取数据,只显示最新的数据点
【发布时间】:2017-02-04 00:21:52
【问题描述】:

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

【问题讨论】:

  • 你想画什么? csv 中的 x 和 y 是什么?
  • 示例 csv 中的第 4 列和第 5 列。 4 是 x,5 是 y。

标签: python csv matplotlib scatter


【解决方案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,所以data是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])

【讨论】:

  • 很棒的卢卡斯!你搞定了。现在我只需要找到一种只显示最新数据点的方法。例如一个新行被添加到 csv 中。可以丢弃图上所有以前的数据点。
  • 我看到了你最后的编辑。这是否解决了删除旧数据点的问题,只在图中留下了最新的 x,y 测量值?一旦我在“最后绘制最后一点:”中进行了编辑,它的功能似乎与以前相同。 csv 中的所有数据点都出现在图中。我只需要 csv 上的最新或底线。
  • 抱歉,我不清楚 csv 文件。 csv 文件会不断更新新的数据行。您上面的示例显示 ['9', '3', '54', '34', '65', '34', '32', ''] 并且 x,y 数据点已映射到图中。片刻之后,csv 文件更新为新的数据行和新的 y,x 位置。
  • 我想要之前的数据点,['9', '3', '54', '34', '65', '34', '32', '']消失并显示新的 x,y 数据点。这个想法是显示运动。一个数据点在新的 csv 条目触发的绘图中移动。
猜你喜欢
  • 2018-02-19
  • 1970-01-01
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 2020-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多