Vẽ đồ thị dữ liệu thời gian thực python

Trong trực quan hóa dữ liệu, biểu đồ thời gian thực có thể là một công cụ mạnh mẽ để phân tích dữ liệu khi dữ liệu truyền vào hệ thống thu nhận. Cho dù là dữ liệu nhiệt độ, dữ liệu âm thanh, dữ liệu thị trường chứng khoán hay thậm chí là dữ liệu truyền thông xã hội - việc theo dõi dữ liệu trong thời gian thực thường có lợi để đảm bảo rằng thiết bị và thuật toán hoạt động bình thường.  

Trong hướng dẫn này, tôi sẽ phác thảo một hàm cơ bản được viết bằng Python cho phép vẽ dữ liệu theo thời gian thực. Chức năng này đơn giản và dễ hiểu, nhưng kết quả mạnh mẽ của nó cho phép bất kỳ nhà nghiên cứu hoặc nhà phân tích dữ liệu nào tận dụng tối đa khả năng giám sát dữ liệu khi dữ liệu truyền vào máy tính của người dùng


Chức năng vẽ sơ đồ thời gian thực của Python

Bạn có thể tìm thấy kho lưu trữ GitHub chứa mã được sử dụng trong hướng dẫn này tại

https. //github. com/kỹ sư thể thao/pylive

 


 

import matplotlib.pyplot as plt
import numpy as np

# use ggplot style for more sophisticated visuals
plt.style.use('ggplot')

def live_plotter(x_vec,y1_data,line1,identifier='',pause_time=0.1):
    if line1==[]:
        # this is the call to matplotlib that allows dynamic plotting
        plt.ion()
        fig = plt.figure(figsize=(13,6))
        ax = fig.add_subplot(111)
        # create a variable for the line so we can later update it
        line1, = ax.plot(x_vec,y1_data,'-o',alpha=0.8)        
        #update plot label/title
        plt.ylabel('Y Label')
        plt.title('Title: {}'.format(identifier))
        plt.show()
    
    # after the figure, axis, and line are created, we only need to update the y-data
    line1.set_ydata(y1_data)
    # adjust limits if new data goes beyond bounds
    if np.min(y1_data)<=line1.axes.get_ylim()[0] or np.max(y1_data)>=line1.axes.get_ylim()[1]:
        plt.ylim([np.min(y1_data)-np.std(y1_data),np.max(y1_data)+np.std(y1_data)])
    # this pauses the data so the figure/axis can catch up - the amount of pause can be altered above
    plt.pause(pause_time)
    
    # return line so we can update it again in the next iteration
    return line1

Một vài lưu ý về chức năng trên

  1. dòng 1. set_ydata(y1_data) cũng có thể được chuyển sang dòng1. set_data(x_vec,y1_data) để thay đổi cả dữ liệu x và y trên các ô

  2. plt. pause() là cần thiết để cho phép máy vẽ bắt kịp - Tôi đã có thể sử dụng thời gian tạm dừng là 0. 01s mà không có vấn đề gì

  3. Người dùng sẽ cần quay lại dòng 1 để kiểm soát dòng khi nó được cập nhật và gửi lại chức năng

  4. Người dùng cũng có thể tùy chỉnh chức năng để cho phép thay đổi động tiêu đề, nhãn x, nhãn y, giới hạn x, v.v.


Ví dụ sử dụng dữ liệu ngẫu nhiên

Cách đơn giản nhất để kiểm tra máy vẽ trực tiếp là nhập dữ liệu ngẫu nhiên và xem nó hoạt động. Tôi đã viết một tập lệnh đơn giản sử dụng numpy để tạo dữ liệu ngẫu nhiên và vẽ đồ thị bằng hàm ở trên. Ví dụ này cũng có trong kho lưu trữ GitHub và là tập lệnh được sử dụng để tạo. ảnh gif được hiển thị ở đầu bài đăng trên blog này []

from pylive import live_plotter
import numpy as np

size = 100
x_vec = np.linspace(0,1,size+1)[0:-1]
y_vec = np.random.randn(len(x_vec))
line1 = []
while True:
    rand_val = np.random.randn(1)
    y_vec[-1] = rand_val
    line1 = live_plotter(x_vec,y_vec,line1)
    y_vec = np.append(y_vec[1:],0.0)

Lưu ý rằng trong đoạn script trên, tôi không vẽ lại dữ liệu trục x. Điều này cho phép chúng tôi nhanh chóng cập nhật dữ liệu y. Đây là ưu điểm di chuyển nhanh của dòng1. set_ydata(y1_data) trái ngược với plt truyền thống. phương thức plot(). Tập lệnh trên cũng có thể được sử dụng để cập nhật cả dữ liệu x và y, nhưng có nhiều vấn đề phát sinh hơn khi xử lý cả chuyển động x và y. Các giới hạn trục x sẽ cần phải tích cực di chuyển các giới hạn của nó, cũng như các giới hạn trục y. Điều này không phải là không thể, tuy nhiên, tôi nghĩ rằng một lợi thế của giải pháp thay thế là chỉ cần thay đổi các nhãn đánh dấu trục x thay vào đó và để yên các giới hạn thực tế. Để chủ động cập nhật nhãn đánh dấu trục x, hãy sử dụng phương pháp sau

dòng 1. trục. set_xticklabels(date_vector)

Điều này sẽ duy trì các giới hạn, căn chỉnh đánh dấu trục x, giới hạn, nhưng thay đổi nhãn trên trục x.  


Kết luận và Tiếp tục

Bài đăng trên blog ngắn này đã giới thiệu một chức năng vẽ sơ đồ trực tiếp đơn giản cho Python. Chức năng vẽ biểu đồ trực tiếp có khả năng tạo trực quan hóa dữ liệu thời gian thực, chất lượng cao, tốc độ cao bằng Python bằng cách sử dụng matplotlib và chỉ một vài dòng mã. Trong bài đăng tiếp theo của tôi về chủ đề này, tôi sẽ giới thiệu trực quan hóa các từ bằng cách sử dụng cùng một phương pháp đã nêu ở trên. Trực quan hóa từ sẽ bắt chước một phương pháp trực quan gọi là 'đám mây từ' và cập nhật các từ dựa trên các cập nhật của Wikipedia trong thời gian thực.  

 

Nhấp vào đây để xem Phần II để tìm hiểu cách tạo một đám mây từ với dữ liệu Wikipedia

Trích dẫn cho trang này


“Là thành viên của Chương trình Amazon Associates, việc nhấp vào liên kết có thể khiến Cổng thông tin Maker nhận được một khoản hoa hồng nhỏ giúp hỗ trợ các dự án trong tương lai. ”

 

Xem thêm trong Lập trình

Đặc sắc

Vẽ đồ thị dữ liệu thời gian thực python

Ngày 15 tháng 7 năm 2021

Trình theo dõi GPS di động với Arduino

Ngày 15 tháng 7 năm 2021

Ngày 15 tháng 7 năm 2021

Ngày 8 tháng 7 năm 2021

Màn hình e-Paper hỗ trợ Bluetooth với Arduino

Ngày 8 tháng 7 năm 2021

Ngày 8 tháng 7 năm 2021

27 Tháng Sáu, 2021

Giới thiệu về RFID với Arduino

27 Tháng Sáu, 2021

27 Tháng Sáu, 2021

9 tháng 3 năm 2021

Màn hình OLED Raspberry Pi Pico (SSD1306)

9 tháng 3 năm 2021

9 tháng 3 năm 2021

1 tháng 3 năm 2021

Đèn LED dạng vòng WS2812 với Raspberry Pi Pico

1 tháng 3 năm 2021

1 tháng 3 năm 2021

Ngày 11 tháng 1 năm 2021

Hiệu chuẩn từ kế với Raspberry Pi

Ngày 11 tháng 1 năm 2021

Ngày 11 tháng 1 năm 2021

Vẽ đồ thị dữ liệu thời gian thực python

Ngày 3 tháng 1 năm 2021

Hiệu chỉnh con quay hồi chuyển và gia tốc kế với Raspberry Pi

Ngày 3 tháng 1 năm 2021

Ngày 3 tháng 1 năm 2021

22 tháng 11 năm 2020

Ghi âm thanh nổi trên Raspberry Pi

22 tháng 11 năm 2020

22 tháng 11 năm 2020

Vẽ đồ thị dữ liệu thời gian thực python

26 Tháng Tư, 2020

Trực quan hóa địa lý bằng Python với Cartopy

26 Tháng Tư, 2020

26 Tháng Tư, 2020

31 Tháng ba, 2020

Trình giả lập radar với Arduino + Python

31 Tháng ba, 2020

31 Tháng ba, 2020

Đặc sắc

Vẽ đồ thị dữ liệu thời gian thực python

bán hết

Bảng Arduino MakerBLE

$22. 00

Micrô USB cho Raspberry Pi

$15. 00

Mô-đun LiDAR TF-Luna

$29. 00

Chỉ còn 1 cái trong kho

Bộ khởi động Raspberry Pi Pico

$15. 00

Mảng 4 micrô QuadMic cho Raspberry Pi

$25. 00

Mô-đun động cơ rung cho Arduino

$5. 00

Vẽ đồ thị dữ liệu thời gian thực python

Bảng đột phá cảm biến áp suất có cổng MPS20N0040D

$12. 00

Chỉ còn 2 cái trong kho

Cổng thông tin nhà sản xuất Arduino Uno Rev3 Board

$13. 00

Máy ảnh nhiệt MLX90640 cho Raspberry Pi (32 x 24 pixel)

từ $95. 00

Vẽ đồ thị dữ liệu thời gian thực python

bán hết

Đèn LED dạng vòng 16 điểm ảnh RGB

$15. 00

Phân tích dữ liệu, Lập trình, Python Joshua HriskoNgày 14 tháng 8 năm 2018 matplotlib, Python, Lập trình Python, Python Live, Mã Python, Trực quan hóa, Thuật toán

Làm cách nào để vẽ thời gian chạy trong Python?

Nó chấp nhận hai tham số a và b và thực hiện phép cộng trên a và b. .
chắc chắn thêm (a, b). trả lại a + b
hoán vị def (chuỗi, bước = 0). nếu bước == len(chuỗi). in "". .
nhập matplotlib. pyplot dưới dạng plt nhập numpy dưới dạng np nhập timeit nhập toán nhập plt ngẫu nhiên. .
ns = np. .
độ = 4 coeffs = np

Những thư viện Python nào có thể được sử dụng để vẽ biểu đồ tương tác thời gian thực?

Matplotlib . Một trong những công cụ tốt nhất để phân tích dữ liệu là Matplotlib. Nó được sử dụng để phân tích dữ liệu 2 chiều và vẽ đồ thị, biểu đồ và biểu diễn dữ liệu cơ bản.

Seaborn có tốt hơn matplotlib không?

Matplotlib là gói đồ họa Python để trực quan hóa dữ liệu và tích hợp độc đáo với Numpy và Pandas. Các khả năng và cú pháp tương tự có sẵn trong Pyplot như trong MATLAB và người dùng MATLAB có thể dễ dàng hiểu được nó. Seaborn thoải mái hơn với khung dữ liệu Pandas .

Làm cách nào để vẽ dữ liệu CSV bằng Python?

MatPlotLib với Python .
Đặt kích thước hình và điều chỉnh phần đệm giữa và xung quanh các ô con
Lập danh sách các tiêu đề của. tệp CSV
Đọc tệp CSV có tiêu đề
Đặt chỉ mục và vẽ biểu đồ khung dữ liệu
Để hiển thị hình, sử dụng phương thức show()