使用 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 应用程序
传感器数据的反思
分析数据集后,我们发现传感器 6 有一个值得注意的现象。与其他传感器相比,传感器 6 测量的值似乎更高,而其他传感器的测量值大多几乎相同。这种差异可能是由以下几个因素造成的:
1. 传感器6附近的冲击或力:较高的数值可能是由于在传感器6处或其附近发生的冲击或作用力引起的。
2. 传感器灵敏度:这也可能是因为传感器6比其他传感器更敏感,可能需要重新校准。
3. 结构柔性:由于结构在更高层次的柔性增加,位于建筑顶部(传感器6所在位置)测得的加速度可能会更高。
值得注意的是,该数据集来自实验环境。在现实场景中,这样的读数需要进一步监控甚至现场访问,以确保数据的准确性和传感器的完整性。
总结
在本项目中,我们设置了Python环境,加载并处理了结构健康监测数据,并使用LightningChart Python进行了可视化。LightningChart Python 提供了先进的图表功能,这对于可视化复杂数据至关重要。整个过程包括读取数据文件、清理和预处理数据以及创建有洞察力的可视化图表。
渝公网安备50010702505508