个人中心

联系我们

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

新闻资讯

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

教程:使用 LightningChart Python 创建水质监测应用程序

原创
数据可视化
来源:LightningChart
python
报表
图表
数据可视化
2024-11-12
python
报表
图表
数据可视化

介绍

水质监测 Python 应用程序

该项目使用 LightningChart Python 可视化爱尔兰沿海地区的实时水质数据。监测水质对于评估水体的健康状况以及确保其对生态系统和人类使用安全至关重要。本文演示了如何有效监测水质,重点关注 pH、溶解氧和温度等关键参数,这些参数对于水监测工作至关重要。

 

为什么监测水质如此重要?

持续监测有助于及早发现污染物和环境压力源,从而能够及时采取干预措施,以保护水生生态系统并维持水质安全

 

LightningChart Python

undefined 

LightningChart Python 是一个高性能库,旨在高效处理大型数据集。它是该项目使用的核心可视化工具,之所以选择它,是因为它能够快速呈现数据并支持实时监控。LightningChart Python 提供各种图表类型,包括面积图、样条图、条形图、散点图和雷达图,所有这些图表类型都用于可视化随时间变化的水质参数。

 

设置Python环境

要为此项目设置 Python 环境,您需要安装 Python 和必要的库。这包括安装 LightningChart Python  Pandas。有关原始项目,请参阅 GitHub

1. 安装 Python:从官方网站下载并安装最新版本的 Python

2. 安装库:使用 pip 安装所需的

pip install lightningchart pandas

3. 通过创建新项目目录并安装所需的库来设置您的开发环境。确保 LightningChart Python 已正确授权

所用库的概述

• Pandas:用于数据操作和分析。(文档

• LightningChart Python:用于创建高性能交互式数据可视化。(文档

Visual Studio Code 中使用 Jupyter Notebook

如果您使用 Visual Studio Code (VSCode) 作为开发环境,则可以在其中直接运行 Jupyter Notebooks,从而获得无缝体验。

安装 VSCode 和 Python 扩展

1. 安装 Visual Studio Code:如果您尚未安装,可以从官方网站下载

2. 安装 Python 扩展:

1. 打开 VSCode。

2. 单击窗口侧面活动栏中的扩展图标,转到扩展视图。

3. 搜索 Microsoft 的“Python”扩展并安装它。

安装 Jupyter 插件

1. 在插件视图中,搜索“Jupyter”并安装 Microsoft 的插件。

2. 此插件允许您直接在 VSCode 中运行 Jupyter notebook(.ipynb 文件)。

 

加载和处理数据

该数据集包括从Cork Harbour、Moy Killala以及爱尔兰其他15个沿海地点收集的11个关键水质监测参数。原始数据集由数据源提供,包含超过120万行数据,数据提供者将其减少到29,159行后用于本项目。我们在预处理过程中检查了缺失值,并确保数据的一致性

以下是数据集中关键参数的概述及其在水质监测中的重要性:

· 总碱度(以 CaCO3 表示):测量水中和酸的能力,保持稳定的 pH 值。

· 总氨(以 N 表示):高浓度时有毒,需要仔细监测以保护水生生物。

· 生化需氧量 (BOD) – 5天 (总量):测量生物分解有机物所需的氧气,表明污染水平。

· 氯化物:评估水的盐度和道路盐或工业排放的潜在污染。

· 25°C 时的电导率:评估水的导电能力,表明盐度。

· 溶解氧:对水生生物至关重要。低水平表明水质差。

· 正磷酸盐(以 P 表示):过量会导致富营养化,通常测量以监测营养水平。

·  pH:表示水的酸度或碱度,影响生物过程。

·  温度:影响化学反应和水生生物的代谢率。

· 总硬度(以 CaCO3 计):反映钙和镁的含量,这对水生生物很重要。

· 真彩 (True Colour)过滤后测量的水色,通常用于评估水的清澈度和潜在污染情况

 

数据加载和预处

下面的代码展示了如何加载数据并提取基本信息:

import pandas as pd

 

# Load the dataset

ireland_dataset_path = 'dataset/Water Quality Monitoring Dataset_ Ireland.csv'

ireland_water_data = pd.read_csv(ireland_dataset_path)

 

# Display basic information about the dataset and check for missing values

ireland_water_data_info = ireland_water_data.info()

ireland_null_values_summary = ireland_water_data.isnull().sum()

 

# Output basic info and missing values

print(ireland_water_data_info)

print(ireland_null_values_summary)

 

接下来,我们对数据进行清理和预处理。以下代码提取并清理水体名称:

# Extracting unique waterbodies

unique_waterbodies = ireland_water_data['WaterbodyName'].unique()

print(unique_waterbodies)

 

# Clean waterbody names for readability

import re

 

def clean_waterbody_name(name):

    # Replace underscores with spaces and keep numbers that follow important    identifiers

    cleaned_name = re.sub(r'_+', ' ', name)  # Replace underscores with spaces

    cleaned_name = re.sub(r'(?<![a-zA-Z])(\d+)', r'\1', cleaned_name)  # Retain numbers if attached to names

    cleaned_name = cleaned_name.title()  # Capitalize for readability

    return cleaned_name.strip()

 

cleaned_names = [clean_waterbody_name(name) for name in unique_waterbodies]

print("Cleaned names:", cleaned_names)

 

使用 LightningChart Python 可视化数据

使用 LightningChart Python,我们创建了多个交互式图表来显示水质监测随时间的变化趋势。这些图表对于监测温度、溶解氧和生物需氧量 (BOD) 等参数至关重要。

 

面积图 – 多年间的平均pH

面积图显示了多年间pH值的波动情况。pH是水质监测中的关键指标,因为它影响水体内的生物和化学过程

# Group by Years and calculate the average pH value for each year

grouped_data = ireland_water_data.groupby('Years')['pH'].mean().reset_index()

 

# Extract x_values (Years) and y_values (average pH)

# Convert years to UNIX time for proper display on the x-axis

x_values = [

    time.mktime(datetime.datetime(year, 1, 1).timetuple()) * 1000 for year in grouped_data['Years']  

]

y_values = grouped_data['pH'].tolist()

 

# Create the chart

chart = lc.ChartXY(

    theme=lc.Themes.Light,

    title='Average pH Over Years'

)

 

# Configure the x-axis for proper time display

x_axis = chart.get_default_x_axis()

x_axis.set_title("Year")

x_axis.set_tick_strategy('DateTime')

 

# Add an area series

series = chart.add_area_series(data_pattern="ProgressiveX")

 

# Append the data to the area series

series.add(x_values, y_values)

 

# Open the chart

chart.open()

 

undefined 

pH 值在一段时间内基本保持稳定,偶尔的下降表明特定年份酸度可能会增加。

样条图 - 多年间的物理参

样条图突出显示了温度和总硬度等物理参数随时间的变化情况。物理参数在确定水是否适合各种用途方面起着重要作用。

# Define the physical parameters to be visualized

parameters = ['Dissolved Oxygen', 'Temperature', 'pH', 'Conductivity @25°C']

 

# Group by Years and calculate the mean for the selected physical parameters

grouped_data = ireland_water_data.groupby('Years')[parameters].mean().reset_index()

 

# Convert years to UNIX time for proper display on the x-axis

x_values = [

    time.mktime(datetime.datetime(year, 1, 1).timetuple()) * 1000 for year in grouped_data['Years']

]

 

# Create the chart

chart = lc.ChartXY(

    theme=lc.Themes.Light,

    title='Mean Physical Parameters Over Years'

)

 

# Configure the x-axis to display dates

x_axis = chart.get_default_x_axis()

x_axis.set_title("Years")

x_axis.set_tick_strategy('DateTime')

 

# Add spline series for each parameter

for parameter in parameters:

    y_values = grouped_data[parameter].tolist()

    series = chart.add_spline_series(data_pattern="ProgressiveX").append_samples(

        x_values=x_values,

        y_values=y_values

    )

    series.set_name(parameter)  # Set the series name for identification

    series.set_line_thickness(2)

 

legend = chart.add_legend()

legend.add(chart)  # Attach all elements within the chart to the legend

 

# Open the chart

chart.open()

 

undefined 

温度略有变化,可能反映季节变化。总硬度保持稳定,表明水中矿物质含量稳定。

 

样条图 多年间的化学参

此图表突出了关键的化学参数,如氯化物和溶解氧水平。请注意,两个参数的数值已放大了100倍,以便使其与图表中的其他参数更具可比性。通过这种缩放处理,可以更好地在视觉上比较那些自然数值较小的参数

联系我们

周一至周日 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