个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

在Python中使用LightningChart Python实现结构完整性分析监测应用程序(下)

原创
数据可视化
来源:LightningChart
图表
数据可视化
3D文件
2D绘图引擎
python
图像处理
2024-09-11
图表
数据可视化
3D文件
2D绘图引擎
python
图像处理

使用 LightningChart Python 可视化数据

我们将使用 LightningChart Python 创建加速度数据的波形图。下面是正在创建仪表板的notebook文件中的两个代码单元格。

import lightningchart as lc

lc.set_license("LICENSE-KEY")

 

# Create a dashboard object with a specified number of columns and rows, and a light theme

dashboard = lc.Dashboard(columns=2, rows=1, theme=lc.Themes.Light)

 

# Opens and initializes dashboard before adding the data in the cell below, hence the live=True

dashboard.open(live=True)

 

# Extract the time and acceleration data from the DataFrame

time = dmgDataCleaned['Time'].tolist()

time = [x * 1000 for x in time]  # Convert time to milliseconds

 

# Extract acceleration data for each sensor and convert to lists

acceleration1 = dmgDataCleaned['Acceleration1'].tolist()

acceleration2 = dmgDataCleaned['Acceleration2'].tolist()

acceleration3 = dmgDataCleaned['Acceleration3'].tolist()

acceleration4 = dmgDataCleaned['Acceleration4'].tolist()

acceleration5 = dmgDataCleaned['Acceleration5'].tolist()

acceleration6 = dmgDataCleaned['Acceleration6'].tolist()

 

# Grouped chart (overlay of all sensors' data)

chart1 = dashboard.ChartXY(column_index=0, row_index=0)

chart1.set_title('Damaged Acceleration Data - Sensors Overlaid')

chart1.get_default_x_axis().set_title('Time').set_tick_strategy('DateTime', 1600342203000)

chart1.get_default_y_axis().set_title('m/s²')

 

# Add line series for each sensor to the grouped chart

series_1 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration1)

series_1.set_name('Sensor 1')

series_2 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration2)

series_2.set_name('Sensor 2')

series_3 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration3)

series_3.set_name('Sensor 3')

series_4 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration4)

series_4.set_name('Sensor 4')

series_5 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration5)

series_5.set_name('Sensor 5')

series_6 = chart1.add_line_series().append_samples(x_values=time, y_values=acceleration6)

series_6.set_name('Sensor 6')

 

# Set the line thickness for each series in the grouped chart

for series in [series_1, series_2, series_3, series_4, series_5, series_6]:

    series.set_line_thickness(2)

 

# Add a legend to the grouped chart

chart1.add_legend(data=chart1)

 

# Stacked Chart (each sensor's data on a separate Y-axis)

chart2 = dashboard.ChartXY(column_index=1, row_index=0)

chart2.set_title('Damaged Acceleration Data - Sensors Stacked')

chart2.get_default_x_axis().set_title('Time').set_tick_strategy('DateTime', 1600342203000)

 

# Remove the default Y-axis since we will add custom Y-axes for each series

chart2.get_default_y_axis().dispose()

 

# Function to add a series to the chart with a stacked Y-axis

def add_series_with_stacked_y_axis(chart, stack_index, x_values, y_values, title):

    # Add a new Y-axis with the specified stack index

    axis_y = chart.add_y_axis(stack_index=stack_index)

 

    # Set margins for the Y-axis (no margins for the first and last axes)

    axis_y.set_margins(15 if stack_index > 0 else 0, 15 if stack_index < 5 else 0)

 

    # Set the title for the Y-axis

    axis_y.set_title(title=title)

 

    # Set the interval for the Y-axis and stop after the specified range

    axis_y.set_interval(-100, 100, stop_axis_after=True)

 

    # Add a line series to the chart using the newly created Y-axis

    series = chart.add_line_series(y_axis=axis_y, data_pattern='ProgressiveX')

 

    # Append the data to the series

    series.append_samples(x_values=x_values, y_values=y_values)

 

    # Set the name and line thickness for the series

    series.set_name(title)

    series.set_line_thickness(2)

 

# Add each sensor's data to the stacked chart with its own stacked Y-axis

add_series_with_stacked_y_axis(chart2, 0, time, acceleration1, 'Sensor 1')

add_series_with_stacked_y_axis(chart2, 1, time, acceleration2, 'Sensor 2')

add_series_with_stacked_y_axis(chart2, 2, time, acceleration3, 'Sensor 3')

add_series_with_stacked_y_axis(chart2, 3, time, acceleration4, 'Sensor 4')

add_series_with_stacked_y_axis(chart2, 4, time, acceleration5, 'Sensor 5')

add_series_with_stacked_y_axis(chart2, 5, time, acceleration6, 'Sensor 6')

此代码创建了一个包含两个图表的仪表板一个图表叠加了所有六个传感器的数据另一个图表在单独的 Y 轴上显示了每个传感器的数据。此可视化提供了加速度数据的全面视图,使分析和比较每个传感器的响应变得更加容易。

 

自定义可视化

调整图表属性以根据您的要求定制可视化效果。

 

最终结构完整性分析 Python 应用程序

undefined 

 

 

 

 

传感器数据的反思

分析数据集后,我们发现传感器 6 有一个值得注意的现象。与其他传感器相比,传感器 6 测量的值似乎更高,而其他传感器的测量值大多几乎相同。这种差异可能是由以下几个因素造成的:

1. 传感器6附近的冲击或力:较高的数值可能是由于在传感器6处或其附近发生的冲击或作用力引起的。

2. 传感器灵敏度:这也可能是因为传感器6比其他传感器更敏感,可能需要重新校准。

3. 结构柔性:由于结构在更高层次的柔性增加,位于建筑顶部(传感器6所在位置)测得的加速度可能会更高。

值得注意的是,该数据集来自实验环境。在现实场景中,这样的读数需要进一步监控甚至现场访问,以确保数据的准确性和传感器的完整性。

 

总结

在本项目中,我们设置了Python环境,加载并处理了结构健康监测数据,并使用LightningChart Python进行了可视化。LightningChart Python 提供了先进的图表功能,这对于可视化复杂数据至关重要。整个过程包括读取数据文件、清理和预处理数据以及创建有洞察力的可视化图表。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508