Как изобразить определенный диапазон значений из текстового файла в matplotlib - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть текстовый файл, содержащий значения как:

0.00   -10.742    10.7888  6.33455
1.00   -17.75391  10.0000  4.66778
4.00   -19.62891  15.9999  4.232323
20.00  -20.7641   18.6666  3.99999
23.00  -34.2300   2.7777   2.00000
50.00  -50.000    1.87878  2.77778
65.88   -22.5000  2.99999  1.45555
78.00   -30.000   1.55555  2.45667
86.00   -37.7900  2.55556  7.55679
90.00   -45.00000 13.6667  2.677888

Я хочу отобразить только диапазон значений из текстового файла после интервала времени другой набор значений для построения.Например: сначала я хочу построить только [от 0 до 50]:

0.00   -10.742
1.00   -17.75391
4.00   -19.62891
20.00  -20.7641
23.00  -34.2300
50.00  -50.000

Через некоторый интервал времени (скажем, 10 с) я хочу построить следующий набор значений, например:

65.88   -22.5000
78.00   -30.000
86.00   -37.7900
90.00   -45.00000

С нетерпением жду, чтобы показать это в виде слайд-шоу.

Я попробовал:

import matplotlib.pyplot as plt
import sys
import numpy as np
from matplotlib import style
fileName=input("Enter Input File Name: ")
f1=open(fileName,'r')
style.use('ggplot')
x1,y1=np.loadtxt(fileName,unpack=True, usecols=(0,1));
plt.plot(x1,y1,'r')
plt.plot
plt.title('example1')
plt.xlabel('Time')
plt.ylabel('Values')
plt.grid(True,color='k')
plt.show()

Я хочу показать это в виде слайд-шоу.Я буду благодарен, если кто-нибудь поможет мне там.

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать цикл for, перебирать строки и отображать их.Допустим, у вас есть 100 строк данных, и вы хотите отображать 25 строк одновременно.

data = np.genfromtxt('/path/to/data/file')

m = np.size(data, 0) # Getting total no of rows
n = np.size(data, 1) # Getting total no of columns

x = data[:, 0].reshape(m, 1) # X data 
y = data[:, 1].reshape(m, 1) # Y data

iters = m // 4
current_iter = 0
colors = ['red', 'blue', 'orange', 'yellow', 'green', 'cyan']

for i in range(3):
    plt.scatter(x[current_iter:current_iter+iters, :], y[current_iter:current_iter+iters, :], color=colors[i])
    plt.title('example1')
    plt.xlabel('Time')
    plt.ylabel('Values')
    plt.pause(10)
    plt.clf()
    current_iter = current_iter + iters

Нам нужно вычислить число iterations.Это сделано iters = m // 4.Теперь вы перебираете количество итераций, используя for.Чтобы приостановить и построить график, используйте plt.pause(10), который отображает график в течение 10 секунд (вы можете установить свое время для вашего удобства).Затем очистите его, используя plot.clf().Это продолжается до конца loop.

Надеюсь, это поможет!.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...