2017-01-13 1 views
-1

Я пытаюсь построить в реальном времени файл (datos.txt), который будет непрерывно получать новые данные от датчика pH.Как я могу построить растущий файл данных в режиме реального времени с помощью matplotlib?

Как показано here, я смог построить файл данных, но я все еще не могу сделать это в режиме реального времени. Я использую следующий код:

import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
from datetime import datetime 
import numpy as np  

# Converter function 
datefunc = lambda x: mdates.date2num(datetime.strptime(x, '%d-%m-%Y %H:%M:%S')) 

# Read data from 'file.dat' 
dates, levels = np.genfromtxt('/home/ramiro/Programas/pythonProgs/datos.txt', # Data to be read 
           delimiter=19, # First column is 19 characters wide 
           converters={0: datefunc}, # Formatting of column 0 
           dtype=float, # All values are floats 
           unpack=True) # Unpack to several variables 

fig = plt.figure() 
ax = fig.add_subplot(111) 

# Configure x-ticks 
ax.set_xticks(dates) # Tickmark + label at every plotted point 
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M')) 

ax.locator_params(axis='x',nbins=10) 
ax.plot_date(dates, levels, ls='-', marker='o') 
ax.set_title('Hora') 
ax.set_ylabel('pH') 
ax.grid(True) 

# Format the x-axis for dates (label formatting, rotation) 
fig.autofmt_xdate(rotation=45) 
fig.tight_layout() 

plt.show() 

Я видел несколько примеров реального времени черчения, но я не могу понять, как сделать работу шахты

+0

Существует вопрос [вопрос о построении данных csv в реальном времени] (http://stackoverflow.com/questions/31922016/creating-a-live-plot-of-csv-data-with-matplotlib). Расскажите, пожалуйста, насколько это не решило проблему. Будьте конкретны в своем вопросе. Что именно вы хотите достичь? Как должны отображаться обновленные данные? – ImportanceOfBeingErnest

ответ

1

Вы можете обернуть участок в animate функционируют следующим образом:

import matplotlib.pyplot as plt 
import matplotlib.dates as mdates 
import matplotlib.animation as animation 
from datetime import datetime 
import numpy as np  

def animate(i, fig, ax): 
    # Converter function 
    datefunc = lambda x: mdates.date2num(datetime.strptime(x, '%d-%m-%Y %H:%M:%S')) 

    # Read data from 'file.dat' 
    dates, levels = np.genfromtxt('/home/ramiro/Programas/pythonProgs/datos.txt', # Data to be read 
            delimiter=19, # First column is 19 characters wide 
            converters={0: datefunc}, # Formatting of column 0 
            dtype=float, # All values are floats 
            unpack=True) # Unpack to several variables 

    # Configure x-ticks 
    ax.set_xticks(dates) # Tickmark + label at every plotted point 
    ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M')) 

    ax.locator_params(axis='x',nbins=10) 
    ax.plot_date(dates, levels, 'k', ls='-', marker='o') 
    ax.set_title('Hora') 
    ax.set_ylabel('pH') 
    ax.grid(True) 

    # Format the x-axis for dates (label formatting, rotation) 
    fig.autofmt_xdate(rotation=45) 
    fig.tight_layout() 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ani = animation.FuncAnimation(fig, animate, fargs=(fig, ax), interval=1000) 
plt.show() 

Это будет перечитывать и отображать ваш участок каждую секунду.

 Смежные вопросы

  • Нет связанных вопросов^_^