
Я хочу использовать line_series вместо simple_plot для достижения динамических эффектов построения графиков. Какое решение является подходящим?
Если я использую simple_plot, это работает; но это не работает с line_series.
import math
import time
import dearpygui.dearpygui as dpg
x_data = []
y_data = []
max_points = 100
start_time = time.time()
for i in range(50):
t = start_time + i * 0.1
x_data.append(t)
y_data.append(math.sin(t) + 0.5 * math.sin(2 * t))
def update_plot():
global x_data, y_data
current_time = time.time()
new_y = math.sin(current_time) + 0.5 * math.sin(2 * current_time)
# 添加新数据
x_data.append(current_time)
y_data.append(new_y)
# 保持数据长度不超过最大值
if len(x_data) > max_points:
x_data = x_data[-max_points:]
y_data = y_data[-max_points:]
# 更新绘图数据
dpg.set_value("line_series", [x_data, y_data])
# 可选:自动调整x轴范围以显示最新数据
if len(x_data) > 1:
dpg.set_axis_limits("x_axis", x_data[0], x_data[-1])
dpg.create_context()
with dpg.window(label="dw", width=800, height=600):
with dpg.plot(label="real data", height=500, width=700):
dpg.add_plot_legend()
# 创建坐标轴
x_axis = dpg.add_plot_axis(dpg.mvXAxis, label="x", tag="x_axis")
y_axis = dpg.add_plot_axis(dpg.mvYAxis, label="y", tag="y_axis")
# 创建线系列
dpg.add_line_series(
x_data, y_data, label="data", parent=y_axis, tag="line_series"
)
dpg.create_viewport(title="fuck", width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
# 设置定时器回调
while dpg.is_dearpygui_running():
update_plot()
dpg.render_dearpygui_frame()
time.sleep(0.05) # 控制更新频率
dpg.destroy_context()
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-effects
Мобильная версия