2017-02-04 18 views
0

Как я могу извлечь данные из столбцов 4 и 5 в файл csv? Также как я могу показать только самую последнюю точку данных? Более старые точки могут исчезнуть.matplotlib разброс, вытащить данные из столбца, показать только новейшую точку данных

Ниже приведено то, что у меня есть до сих пор и ниже, это пример файла 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

Что вы хотите построить? Что такое x и y в csv? – Lucas

+0

Столбец 4 и 5 в примере csv. 4 - x и 5 - y. – MarcusBrodie

ответ

1

eachLine.split(',') возвращает список, как это (последний Elemente пуст для последней запятой в формате 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

+0

Awesome Lucas! Ты сделал это. Теперь мне просто нужно найти способ показать только новейшую точку данных. например в csv добавляется новая строка. Все предыдущие данные на графике могут быть отброшены. – MarcusBrodie

+0

Я вижу ваше последнее изменение. Было ли это обращение к удалению старых точек данных, оставляя только последние измерения x, y на графике? Как только я внес изменения в «Наконец, чтобы построить последний пункт:», похоже, он работает так же, как и раньше. Все точки данных в csv отображаются на графике. Мне нужна только последняя или нижняя строка на csv. – MarcusBrodie

+0

Надеюсь, я хорошо тебя понял. Я стараюсь быть более ясным. – Lucas