如何在matplotlib中从文本文件绘制特定范围的值

时间:2019-02-21 04:51:14

标签: python matplotlib

我有一个文本文件,包含以下值:

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

在一个时间间隔(例如10s)之后,我希望绘制下一组值,即:

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 :(得分:0)

您可以使用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的结尾。

希望这会有所帮助!。