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. 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 giám sát dữ liệu theo thời gian thực thường rất thuận 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[][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
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 ô
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ì
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
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 [bấm vào đây để xem lại]
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 nhãn đánh dấu trục x thay vào đó và để nguyê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
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
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
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
bán hết
Bảng Arduino MakerBLE
$22. 00
Micrô USB cho Raspberry Pi
$15. 00
Mô-đun LiDAR TF-Luna
$29. 00
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
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
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