当前位置: 首页 > news >正文

分布类相关的可视化图像

目录

一、直方图(Histogram)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

二、密度图(Density Plot)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

三、箱线图(Box Plot)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

四、小提琴图(Violin Plot)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

五、热力图(Heatmap)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

六、蜂群图

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

七、累积分布函数图(Cumulative Distribution Function,CDF图)

1.定义

2.特点

3.局限性

4.类型

5.应用场景

6.使用Python实现

八、总结

一、直方图(Histogram)

1.定义

        直方图是一种用于展示数据分布的柱状图。它将数据划分为若干个连续、不重叠的区间(称为“桶”或“bin”),并统计每个区间内的数据点数量。直方图通过柱状的高度来表示每个区间内的数据频数,从而直观地展示数据的分布情况。

2.特点

  • 直观性:通过柱状图的形式,可以直观地展示数据的集中趋势、分散程度和偏态情况。

  • 灵活性:可以通过调整bin的宽度和数量,更细致或更宏观地观察数据分布。

  • 多用途:适用于单变量数据的分布分析,能够帮助识别数据中的异常值或分布的异常情况。

3.局限性

  • 依赖bin的划分:bin的宽度和数量的选择会影响直方图的形状,可能导致对数据分布的误解。如果bin太宽,可能会掩盖数据的细节;如果bin太窄,可能会引入噪声。

  • 不适用于小数据集:数据量较小时,直方图可能无法准确反映数据的真实分布。

  • 无法展示连续分布:直方图只能展示数据在各个区间的频数,无法展示数据的连续分布情况。

4.类型

  • 简单直方图:最基本的直方图,展示数据在各个区间的频数。

  • 堆叠直方图:用于展示多个数据集的分布情况,通过堆叠的方式将不同数据集的柱状图叠加在一起。

  • 并排直方图:用于展示多个数据集的分布情况,通过并排的方式将不同数据集的柱状图并排放置。

  • 频率直方图:展示每个区间的频率(相对频数),而不是频数。

  • 累积直方图:展示每个区间的累积频数或累积频率。

5.应用场景

  • 数据分析:用于分析单变量数据的分布情况,例如考试成绩分布、商品价格分布、用户年龄分布等。

  • 数据预处理:帮助识别数据中的异常值或数据分布的异常情况,为后续的数据处理提供依据。

  • 质量控制:在生产过程中,用于分析产品质量指标的分布情况,判断生产过程是否稳定。

  • 市场研究:分析消费者行为数据的分布情况,例如购买金额、购买频率等。

6.使用Python实现

        使用Matplotlib绘制直方图。

import matplotlib.pyplot as plt
import numpy as np# 示例数据
data = np.random.randn(1000)  # 生成1000个正态分布的随机数# 绘制简单直方图
plt.hist(data, bins=30, edgecolor='black', alpha=0.7, color='blue')
plt.title('Simple Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.show()

        结果:生成一个简单直方图,展示数据的分布情况,柱状图的高度表示每个bin内的数据点数量。

         绘制堆叠直方图。堆叠直方图用于展示多个数据集的分布情况,通过堆叠的方式将不同数据集的柱状图叠加在一起。

#堆叠直方图
import matplotlib.pyplot as plt
import numpy as np
# 示例数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2  # 偏移2个单位
# 绘制堆叠直方图
plt.hist([data1, data2], bins=30, stacked=True, edgecolor='black', label=['Data 1', 'Data 2'])
plt.title('Stacked Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')
plt.legend()
plt.show()

        结果:生成一个堆叠直方图,展示两个数据集的分布情况,不同数据集的柱状图通过堆叠的方式叠加在一起。

二、密度图(Density Plot)

1.定义

        密度图是一种基于核密度估计(Kernel Density Estimation, KDE)的可视化方法,用于展示数据的概率密度分布。它通过平滑处理数据点,生成一条连续的曲线,从而更直观地展示数据的分布特征。密度图的核心思想是将每个数据点视为一个“核”,并通过核函数对数据点进行平滑处理,最终得到一个连续的概率密度函数。

2.特点

  • 平滑性:相比直方图,密度图更加平滑,能够更直观地展示数据的连续分布情况。

  • 灵活性:可以通过调整核函数和带宽参数来优化密度曲线的形状,以更好地适应数据的分布特征。

  • 直观性:能够清晰地展示数据的集中趋势、分散程度和偏态情况。

  • 多用途:适用于展示连续数据的概率分布,尤其适用于数据点较多且分布较为复杂的情况。

3.局限性

  • 依赖参数选择:核函数和带宽参数的选择会影响密度曲线的形状,可能导致对数据分布的误解。如果带宽过大,可能会掩盖数据的真实分布;如果带宽过小,可能会引入噪声。

  • 计算复杂度:对于大数据集,核密度估计的计算复杂度较高,可能会影响性能。

  • 不适用于离散数据:密度图主要用于展示连续数据的分布,对于离散数据可能不太适用。

4.类型

  • 单变量密度图:用于展示单个变量的概率密度分布。

  • 多变量密度图:用于展示多个变量的概率密度分布,可以通过堆叠或并排的方式展示不同变量的密度曲线。

  • 二维密度图:用于展示两个变量的联合概率密度分布,通常通过等高线图或热力图来表示。

5.应用场景

  • 数据分析:用于展示连续数据的概率分布,帮助识别数据的集中趋势、分散程度和偏态情况。

  • 数据比较:可以用于比较不同组数据的分布差异,例如不同性别或不同年龄段的收入分布。

  • 机器学习:在数据预处理阶段,帮助理解数据的分布特征,为后续的建模提供依据。

  • 统计分析:用于展示数据的分布情况,辅助进行假设检验和模型拟合。

6.使用Python实现

        使用Matplotlib绘制单变量密度图

#密度图
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import gaussian_kde# 示例数据
data = np.random.randn(1000)  # 生成1000个正态分布的随机数# 计算核密度估计
kde = gaussian_kde(data)
x = np.linspace(min(data), max(data), 1000)
density = kde(x)# 绘制密度图
plt.plot(x, density, color='blue', label='Density')
plt.title('Density Plot')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

        结果:生成一条平滑的密度曲线,展示数据的概率密度分布。

        使用Seaborn绘制多变量密度图。Seaborn的kdeplot函数支持多变量数据,可以通过堆叠或并排的方式展示不同变量的密度曲线。

#多变量密度图
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt  # 添加这行导入# 示例数据
data1 = np.random.randn(1000)  # 生成1000个正态分布的随机数
data2 = np.random.randn(1000) + 2  # 偏移2个单位# 绘制多变量密度图
sns.kdeplot(data1, fill=True, color='blue', label='Data 1')
sns.kdeplot(data2, fill=True, color='orange', label='Data 2')
plt.title('Multi - variable Density Plot')
plt.xlabel('Value')
plt.ylabel('Density')
plt.legend()
plt.show()

        结果:生成两条平滑的密度曲线,分别展示两个数据集的概率密度分布,并填充曲线下的区域。

三、箱线图(Box Plot)

1.定义

        箱线图(Box Plot),也称为箱须图(Box-and-Whisker Plot),是一种用于展示一组数据的五数概括(最小值、第一四分位数、中位数、第三四分位数和最大值)的可视化方法。它通过一个矩形框(箱体)和若干条线(须线)来表示数据的分布范围和集中趋势。箱线图能够直观地展示数据的中位数、四分位数范围(IQR)、异常值以及数据的偏态情况。

2.特点

  • 五数概括:清晰地展示数据的最小值、第一四分位数(Q1)、中位数(Q2)、第三四分位数(Q3)和最大值。

  • 直观性:通过箱体的大小和位置,可以直观地比较不同组数据的分布差异。

  • 异常值检测:能够识别数据中的异常值(通常定义为超出1.5倍四分位距范围的点)。

  • 偏态展示:通过箱体和须线的不对称性,可以直观地判断数据的偏态情况。

3.局限性

  • 信息有限:仅展示五数概括,无法反映数据的详细分布情况,例如双峰分布等。

  • 依赖数据量:对于小数据集,箱线图可能无法准确反映数据的真实分布。

  • 异常值定义主观性:异常值的定义(通常是1.5倍IQR)是主观的,可能不适用于所有数据集。

4.类型

  • 简单箱线图:展示单组数据的五数概括。

  • 分组箱线图:用于展示多组数据的分布情况,通过并排的方式展示不同组的箱线图。

  • 带点箱线图:在箱线图的基础上,展示原始数据点,便于更直观地观察数据分布。

5.应用场景

  • 数据分析:用于分析数据的分布特征,尤其是数据的集中趋势和离散程度。

  • 数据比较:在多组数据的比较中,能够快速识别出异常值和数据分布的偏态情况。

  • 质量控制:在生产过程中,用于分析产品质量指标的分布情况,判断生产过程是否稳定。

  • 统计分析:用于展示数据的分布情况,辅助进行假设检验和模型拟合。

6.使用Python实现

        使用Matplotlib绘制简单箱线图

        结果:生成一个简单箱线图,展示数据的五数概括,箱体表示四分位数范围,须线表示数据的分布范围,点表示异常值。

        使用Seaborn绘制分组箱线图

import seaborn as sns
import numpy as np
import pandas as pd# 示例数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2  # 偏移2个单位
df = pd.DataFrame({'Value': np.concatenate([data1, data2]),'Group': ['Group 1'] * 100 + ['Group 2'] * 100})# 绘制分组箱线图
sns.boxplot(x='Group', y='Value', data=df, palette='Set2')
plt.title('Grouped Box Plot')
plt.ylabel('Value')
plt.show()

        结果:生成一个分组箱线图,展示两组数据的分布情况,通过并排的方式展示不同组的箱线图。

四、小提琴图(Violin Plot)

1.定义

        小提琴图是一种结合了箱线图(Box Plot)和密度图(Density Plot)的可视化工具。它在箱线图的基础上,增加了两侧的密度曲线,用于展示数据的概率密度分布。小提琴图通过箱线图展示数据的五数概括(最小值、第一四分位数、中位数、第三四分位数和最大值),并通过密度曲线展示数据的连续分布情况。

2.特点

  • 综合展示:结合了箱线图和密度图的优点,既能展示数据的五数概括,又能展示数据的连续分布情况。

  • 直观性:通过小提琴的宽度,可以直观地看出数据在不同值范围内的密度大小,帮助识别数据的集中趋势和离散程度。

  • 异常值检测:与箱线图类似,小提琴图也可以展示异常值。

  • 多组数据比较:可以并排展示多组数据的小提琴图,便于比较不同组数据的分布差异。

3.局限性

  • 依赖参数选择:密度曲线的形状依赖于核函数和带宽参数的选择,可能导致对数据分布的误解。

  • 信息过载:在展示多组数据时,小提琴图可能会显得过于拥挤,尤其是当数据组数较多时。

4.类型

  • 简单小提琴图:展示单组数据的分布情况。

  • 分组小提琴图:并排展示多组数据的分布情况,便于比较不同组之间的差异。

  • 堆叠小提琴图:将多组数据的小提琴图堆叠在一起,展示数据的层次结构。

5.应用场景

  • 数据分析:用于展示复杂数据的分布情况,尤其适用于数据分布不均匀或存在多个峰值的情况。

  • 数据比较:在多组数据的比较中,能够更全面地展示数据的分布特征和差异。

  • 统计分析:用于展示数据的分布情况,辅助进行假设检验和模型拟合。

  • 机器学习:在数据预处理阶段,帮助理解数据的分布特征,为后续的建模提供依据。

6.使用Python实现

使用Matplotlib绘制简单小提琴图

#小提琴图
import matplotlib.pyplot as plt
import numpy as np
# 示例数据
data = np.random.randn(100)  # 生成100个正态分布的随机数
# 绘制简单小提琴图
plt.violinplot(data, showmeans=True, showmedians=True)
plt.title('Simple Violin Plot')
plt.ylabel('Value')
plt.show()

        结果:生成一个简单小提琴图,展示数据的五数概括和密度分布情况。

        使用Matplotlib绘制分组小提琴图

import matplotlib.pyplot as plt
import numpy as np# 示例数据
data1 = np.random.randn(100)
data2 = np.random.randn(100) + 2  # 偏移2个单位
data = [data1, data2]# 绘制分组小提琴图
plt.violinplot(data, showmeans=True, showmedians=True)
plt.title('Grouped Violin Plot')
plt.ylabel('Value')
plt.xticks([1, 2], ['Group 1', 'Group 2'])
plt.show()

        结果:生成一个分组小提琴图,展示两组数据的分布情况,通过并排的方式展示不同组的小提琴图。

五、热力图(Heatmap)

1.定义

        热力图是一种用于展示二维数据分布的可视化方法,通过颜色的变化来表示数据的大小或密度。它通常用于展示矩阵数据或二维表格数据,例如相关性矩阵、地理数据分布、时间序列数据等。热力图的核心思想是将数据映射到颜色的渐变上,从而直观地展示数据的分布模式和相关性。

2.特点

  • 直观性:通过颜色的渐变,可以快速识别数据的高低和聚集区域。

  • 多用途:适用于展示相关性矩阵、地理数据分布、时间序列数据等多种二维数据。

  • 灵活性:可以通过调整颜色映射、添加注释等方式增强可视化效果。

  • 数据比较:可以同时展示多个变量之间的关系,便于比较和分析。

3.局限性

  • 信息过载:当数据量较大或变量较多时,热力图可能会显得过于拥挤,难以清晰地展示细节。

  • 依赖颜色选择:颜色映射的选择会影响热力图的可读性,不恰当的颜色选择可能导致误解。

  • 不适合展示非矩阵数据:热力图主要用于展示矩阵数据,对于非矩阵数据可能不太适用。

4.类型

  • 相关性热力图:用于展示变量之间的相关性,通常用于统计分析。

  • 地理热力图:用于展示地理数据的分布情况,例如人口密度、温度分布等。

  • 时间序列热力图:用于展示时间序列数据的变化趋势,例如每日温度、股票价格等。

  • 矩阵热力图:用于展示任意二维矩阵数据,例如用户行为数据、基因表达数据等。

5.应用场景

  • 地理分析:用于展示地理数据的分布情况,例如人口密度、温度分布等。

  • 时间序列分析:用于展示时间序列数据的变化趋势,帮助识别周期性和异常点。

  • 用户行为分析:用于展示用户行为数据的分布情况,例如网站访问量、用户点击率等。

6.使用Python实现

        使用Matplotlib绘制相关性热力图

import matplotlib.pyplot as plt
import numpy as np# 示例数据:生成一个相关性矩阵
data = np.random.randn(10, 10)
corr_matrix = np.corrcoef(data)# 绘制热力图
plt.imshow(corr_matrix, cmap='coolwarm', interpolation='nearest')
plt.colorbar(label='Correlation')
plt.title('Correlation Heatmap')
plt.xlabel('Variable Index')
plt.ylabel('Variable Index')
plt.show()

        结果:生成一个相关性热力图,展示变量之间的相关性。颜色的深浅表示相关性的强弱。

        使用Seaborn绘制地理热力图

import seaborn as sns
import numpy as np
import pandas as pd# 示例数据:生成一个地理数据矩阵
data = np.random.rand(10, 10) * 100  # 假设数据范围为0到100
df = pd.DataFrame(data, columns=[f"Long {i}" for i in range(10)],index=[f"Lat {i}" for i in range(10)])# 绘制地理热力图
sns.heatmap(df, annot=True, fmt=".1f", cmap='viridis', linewidths=0.5)
plt.title('Geographical Heatmap')
plt.show()

         结果:生成一个地理热力图,展示地理数据的分布情况。颜色的深浅表示数据的大小。

六、蜂群图

1.定义

        蜂群图是一种点图的变体,它通过将数据点沿着一个轴排列,并在另一个轴上进行微小的偏移,以避免重叠。这种排列方式使得每个数据点都能清晰地展示出来,同时保留了数据的分布信息。蜂群图特别适合展示具有多个类别的数据分布情况。

2.特点

  • 清晰展示数据点:通过微小的偏移,避免了数据点的重叠,使得每个数据点都能清晰地展示出来。

  • 保留分布信息:与箱线图或小提琴图相比,蜂群图保留了每个数据点的具体信息,而不是仅仅展示统计量。

  • 适用于小数据集:对于数据量较小的数据集,蜂群图能够有效地展示数据的分布情况。

  • 灵活性:可以通过调整点的大小、颜色和形状,增强可视化效果。

3.局限性

  • 不适用于大数据集:当数据量较大时,蜂群图可能会显得过于拥挤,难以清晰地展示每个数据点。

  • 依赖数据分布:如果数据分布过于密集,蜂群图可能会失去其优势,甚至导致视觉上的混乱。

  • 信息有限:虽然蜂群图能够展示每个数据点,但它无法像箱线图或小提琴图那样直接展示数据的统计量(如中位数、四分位数等)。

4.类型

  • 简单蜂群图:展示单组数据的分布情况。

  • 分组蜂群图:并排展示多组数据的分布情况,便于比较不同组之间的差异。

  • 堆叠蜂群图:将多组数据的蜂群图堆叠在一起,展示数据的层次结构。

5.应用场景

  • 数据分析:用于展示数据的分布情况,特别适合小数据集。

  • 数据比较:在多组数据的比较中,能够清晰地展示每个数据点的位置,便于识别差异。

  • 统计分析:用于展示数据的分布情况,辅助进行假设检验和模型拟合。

  • 机器学习:在数据预处理阶段,帮助理解数据的分布特征,为后续的建模提供依据。

6.使用Python实现

        使用Matplotlib绘制简单蜂群图

import matplotlib.pyplot as plt
import numpy as np# 示例数据
data = np.random.randn(500)  # 生成500个正态分布的随机数# 计算偏移量
jitter = np.random.uniform(-0.1, 0.1, size=len(data))# 绘制蜂群图
plt.scatter(jitter, data, alpha=0.7, color='blue')
plt.title('Simple Beeswarm Plot')
plt.xlabel('Category')
plt.ylabel('Value')
plt.show()

        结果:生成一个简单蜂群图,展示数据的分布情况,每个数据点通过微小的偏移避免重叠。

        使用Seaborn绘制分组蜂群图

import seaborn as sns
import matplotlib.pyplot as plt# 加载Seaborn自带的tips数据集
tips = sns.load_dataset('tips')# 绘制蜂群图,按' day'(星期几)分组,展示'tip'(小费金额),并根据'smoker'(是否吸烟)进行颜色区分
sns.swarmplot(x='day', y='tip', hue='smoker', data=tips)plt.title('Grouped Beeswarm Plot of Tips')
plt.xlabel('Day of the Week')
plt.ylabel('Tip Amount')
plt.legend(title='Smoker')
plt.show()

        结果:生成一个分组蜂群图,展示四组数据的分布情况,通过并排的方式展示不同组的蜂群图。

七、累积分布函数图(Cumulative Distribution Function,CDF图)

1.定义

        累计分布图(CDF)是一种用于展示数据分布的函数图,它表示数据值小于或等于某个特定值的概率。CDF是一个单调递增的函数,其值域在0,1之间。对于一个随机变量X,其累计分布函数F(x)定义为: F(x)=P(X≤x) CDF图通过绘制x值与对应的F(x)值,直观地展示了数据的分布情况。

2.特点

  • 直观性:CDF图能够直观地展示数据值的累积概率,帮助理解数据的分布范围和集中程度。

  • 单调性:CDF图是一个单调递增的函数,其值域在0,1之间,便于比较不同数据集的分布。

  • 灵活性:可以通过调整数据的分组或分段,展示不同粒度的累积分布情况。

3.局限性

  • 信息有限:CDF图主要展示累积概率,无法像直方图或密度图那样直观地展示数据的具体分布形状。

  • 依赖数据量:对于小数据集,CDF图可能不够平滑,难以准确反映数据的真实分布。

  • 不适用于多变量比较:CDF图主要用于单变量数据的分析,对于多变量数据的比较,可能需要绘制多个CDF图,导致信息过载。

4.类型

  • 简单CDF图:展示单个数据集的累积分布情况。

  • 分组CDF图:并排或堆叠展示多个数据集的累积分布情况,便于比较不同组之间的差异。

  • 经验CDF图:基于实际数据计算的CDF图,通常用于展示样本数据的分布情况。

5.应用场景

  • 数据分析:用于展示数据的分布范围和累积概率,帮助识别数据的集中趋势和离散程度。

  • 统计分析:用于计算分位数(如中位数、四分位数等),评估数据的偏态和离散程度。

  • 质量控制:在生产过程中,用于分析产品质量指标的分布情况,判断生产过程是否稳定。

6.使用Python实现

        使用Matplotlib绘制简单CDF图

import matplotlib.pyplot as plt
import numpy as np# 示例数据
data = np.random.randn(1000)  # 生成1000个正态分布的随机数# 计算累积分布函数
counts, bin_edges = np.histogram(data, bins=30)
cdf = np.cumsum(counts) / np.sum(counts)# 绘制CDF图
plt.plot(bin_edges[1:], cdf, marker='.', linestyle='-', color='b')
plt.title('Cumulative Distribution Function (CDF)')
plt.xlabel('Value')
plt.ylabel('Cumulative Probability')
plt.grid(True)
plt.show()

        结果:生成一个简单的CDF图,展示数据的累积分布情况

        使用Seaborn绘制分组经验CDF图

import seaborn as sns
import numpy as np
import pandas as pd# 示例数据
data1 = np.random.randn(1000)
data2 = np.random.randn(1000) + 2  # 偏移2个单位
df = pd.DataFrame({'Value': np.concatenate([data1, data2]),'Group': ['Group 1'] * 1000 + ['Group 2'] * 1000})# 绘制分组经验CDF图
sns.ecdfplot(data=df, x='Value', hue='Group', palette='Set2')
plt.title('Grouped Empirical Cumulative Distribution Function (ECDF)')
plt.xlabel('Value')
plt.ylabel('Cumulative Probability')
plt.grid(True)
plt.show()

        结果:生成一个分组经验CDF图,展示两组数据的累积分布情况。Seaborn会自动处理数据的分组和累积概率的计算。

八、总结

图表

类型

特点适用场景局限性
直方图直观呈现数据频数分布,可看出数据集中和分散情况展示单变量数据分布,如学生成绩区间分布、产品尺寸分布分组方式影响展示效果,对数据变化趋势展示不足
密度图平滑展示数据分布,可对比多组数据分布形状,不受分组影响分析连续型数据分布,如不同地区气温分布对比难以精确读取具体数值,对数据量小的情况可能不准确
箱线图可直观展示数据分布范围、偏态、离散程度及异常值,便于多组数据比较比较多组数据分布,如不同班级成绩分布对比不能详细展示数据分布形状,对分布细节展示有限
小提琴图兼具箱线图和密度图优势,全面展示数据分布特征,如中心位置、离散程度、分布形状展示多组数据分布特征,对比不同类别数据分布绘制相对复杂,数据量过大时可能视觉上较杂乱
热力图能快速展示数据间差异和相似性,直观呈现数据分布模式展示矩阵数据(如相关性矩阵、时间序列数据矩阵)、地理空间数据分布,如店铺在不同区域的热度分布颜色映射可能造成视觉误差,难以展示数据具体数值
蜂群图可展示大量数据点分布,能清晰看到每个数据点位置,体现数据实际取值展示分组数据分布,查看组内数据离散情况,如不同部门员工绩效得分分布数据点过多时可能重叠,影响观察,不适合展示数据整体分布趋势
累积分布图可直观了解数据在某个值以下的累积概率,判断数据分布特征,如是否符合某种理论分布检验数据分布类型,分析数据累积概率,如判断产品寿命是否符合指数分布不能展示数据分布细节,如峰值位置等

相关文章:

分布类相关的可视化图像

目录 一、直方图(Histogram) 1.定义 2.特点 3.局限性 4.类型 5.应用场景 6.使用Python实现 二、密度图(Density Plot) 1.定义 2.特点 3.局限性 4.类型 5.应用场景 6.使用Python实现 三、箱线图(Box Plo…...

【android bluetooth 框架分析 02】【Module详解 12】【 BidiQueue、BidiQueueEnd、Queue介绍】

1. BidiQueue 和 BidiQueueEnd 蓝牙协议栈里面有很多 BidiQueue ,本节就专门来梳理这块内容。 2. BidiQueue 介绍 BidiQueue,是 Host 与 Controller 层通信的中枢之一, acl_queue_、sco_queue_、iso_queue_ 都是 BidiQueue 类型。让我们一起看一下这个…...

c++通讯录管理系统

通讯录是一个可以记录亲人,好友的信息工具。 功能包括: 1,添加联系人:向通讯录添加新人,包括(姓名,性别年龄,联系电话,家庭住址) 2,显示联系人…...

React 打包

路由懒加载 原本的加载方式 #使用lazy()函数声明的路由页面 使用Suspense组件进行加载 使用CDN优化...

day1 python训练营

变量与输出 print(1,2,3,sep\n,endsep用来区分两个变量,end会紧跟最后一个变量) print(1,2,3,sepaaa,endsep用来区分两个变量,3后面不会再输出aaa) 格式化字符串 变量名值 print(f"变量名{变量名}") 变量的基础运算 ,-*,/ 注意*不要忘写。比如2j就不…...

C语言状态字与库函数详解:概念辨析与应用实践

C语言状态字与库函数详解:概念辨析与应用实践 一、状态字与库函数的核心概念区分 在C语言系统编程中,"状态字"和"库函数"是两个经常被混淆但本质完全不同的概念,理解它们的区别是掌握系统编程的基础。 1. 状态字&…...

软件测试笔记(测试的概念、测试和开发模型介绍、BUG介绍)

软件测试笔记 认识测试 软件测试是啥? 说白了,就是检查软件的功能和效果是不是用户真正想要的东西。比如用户说“我要一个能自动算账的软件”,测试就是看这个软件到底能不能准确算账、有没有漏掉功能。 软件测试定义:软件测试就…...

Python多进程同步全解析:从竞争条件到锁、信号量的实战应用

1. 进程同步的必要性 在多进程编程中,当多个进程需要访问共享资源时,会出现竞争条件问题。例如火车票售卖系统中,如果多个售票窗口同时读取和修改剩余票数,可能导致数据不一致。 1.1 竞争条件示例 from multiprocessing import…...

Vue3 + TypeScript,关于item[key]的报错处理方法

处理方法1:// ts-ignore 注释忽略报错 处理方法2:item 设置为 any 类型...

Spring源码中关于抽象方法且是个空实现这样设计的思考

Spring源码抽象方法且空实现设计思想 在Spring源码中onRefresh()就是一个抽象方法且空实现,而refreshBeanFactory()方法就是一个抽象方法。 那么Spring源码中onRefresh方法定义了一个抽象方法且是个空实现,为什么这样设置,好处是什么。为…...

Pandas数据可视化

在当今这个数据驱动的时代,数据可视化已经成为数据分析不可或缺的一部分。通过图形化的方式展示数据,我们能够更直观地理解数据的分布、趋势和关系,从而做出更加精准的决策。Pandas,作为Python中最为流行的数据处理库,…...

string类(详解)

【本节目标】 1. 为什么要学习string类 2. 标准库中的string类 3. string类的模拟实现 4. 扩展阅读 1. 为什么学习string类? 1.1 C语言中的字符串 C 语言中,字符串是以 \0 结尾的一些字符的集合,为了操作方便, C 标准库中提供…...

零基础上手Python数据分析 (19):Matplotlib 高级图表定制 - 精雕细琢,让你的图表脱颖而出!

写在前面 —— 超越默认样式,掌握 Matplotlib 精细控制,打造专业级可视化图表 上一篇博客,我们学习了 Matplotlib 的基础绘图功能,掌握了如何绘制常见的折线图、柱状图、散点图和饼图,并进行了基本的图表元素定制,例如添加标题、标签、图例等。 这些基础技能已经能让我…...

【上位机——MFC】MFC入门

MFC库中相关类简介 CObject MFC类库中绝大部分类的父类,提供了MFC类库中一些基本的机制。 对运行时类信息的支持。对动态创建的支持。对序列化的支持。 CWinApp 应用程序类,封装了应用程序、线程等信息。 CDocument 文档类,管理数据 F…...

ASP.NET Core 最小 API:极简开发,高效构建(下)

在上篇文章 ASP.NET Core 最小 API:极简开发,高效构建(上) 中我们添加了 API 代码并且测试,本篇继续补充相关内容。 一、使用 MapGroup API 示例应用代码每次设置终结点时都会重复 todoitems URL 前缀。 API 通常具有…...

【leetcode100】一和零

1、题目描述 给你一个二进制字符串数组 strs 和两个整数 m 和 n 。 请你找出并返回 strs 的最大子集的长度,该子集中 最多 有 m 个 0 和 n 个 1 。 如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集 。 示例 1: 输入&#xff1a…...

代码随想录算法训练营第五十三天 | 105.有向图的完全可达性 106.岛屿的周长

105.有向图的完全可达性 题目链接:101. 孤岛的总面积 文章讲解:代码随想录 视频讲解:图论:岛屿问题再出新花样 | 深搜优先搜索 | 卡码网:101.孤岛总面积_哔哩哔哩_bilibili 思路: 1.确认递归函数&…...

在 Debian 10.x 安装和配置 Samba

1. 更新系统 sudo apt update sudo apt upgrade -y2. 安装 Samba sudo apt install samba -y3. 配置 Samba 备份默认配置文件 sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak编辑配置文件 sudo nano /etc/samba/smb.conf示例配置(共享目录) …...

Python中的短路运算

近期在学习python的过程中遇到此问题,遂总结记录 在”and“逻辑判定布尔类型时: 若判定对象均为True,则输出最后一个判别为True的对象 若判定对象的数据类型中有布尔类型,且最终结果为False,则输出布尔类型False 若判定对象的…...

Java8-遍历list取出两个字段重新组成list集合

在Java 8中,可以使用Stream API遍历List并提取两个字段重新组合成新的List。 以下是几种常见方法: 方法1:使用自定义类 定义一个包含目标字段的类:public class FieldHolder {private final String field1;private final int field2;public FieldHolder(String field1, i…...

【C++ 程序设计】实战:C++ 实践练习题(31~40)

目录 31. 数列:s 1 + 2 + 3 + … + n 32. 数列:s 1 - 2 - 3 - … - n 33. 数列:s 1 + 2 - 3 + … - n 34. 数列:s 1 - 2 + 3 - … &#…...

【笔记】SpringBoot实现图片上传和获取图片接口

上传图片接口 接口接收图片文件和布尔类型的是否生成缩略图参数。 生成保存图片文件的文件夹,文件夹的命名为上传图片的日期“根目录\file\cover\202504”,如果文件夹已存在则不生成。接下来拼接文件名,生成30位的随机数拼接到原文件名防止文件名相同的…...

Linux 下依赖库的问题

假设你在 某用户 user_name 下安装了一个 rquests库。 然后你在命令行使用 python3 -c (...)验证。发现没有任何问题。 然后你使用python3 xxx.py 发现执行验证也没有问题。 这个时候你信心慢慢的写了一个C的代码在代码中system调用这个.py文件。 然…...

STM32 HAL 水位传感器驱动程序

工作原理是输出模拟量电压值,只需要使用stm32adc读取电压再转换一下即可 本代码中,水位传感器连接在PA0,可通过宏定义快速设置电压区间和水位之间的关系 water_level.c /***************************************************************…...

DeepSeek R1 7b,Langchain 实现 RAG 知识库 | LLMs

DeepSeek R1 7b,Langchain 实现 RAG 知识库 | LLMs DeepSeek R1 7b,Langchain 实现 RAG 知识库DeepSeek R1Chat via ConsoleChat via Browser LangchainFAQs GitHub https://github.com/hailiang-wang/ollama-get-started DeepSeek R1 7b,La…...

【C语言】char unsigned char signed char

在C语言中,char 和 unsigned char 虽然都是1字节(通常8位)的数据类型,但它们在符号处理、数值范围和用途上有显著区别。以下是详细对比: 1. 核心区别 特性charunsigned char符号性可能是signed或unsigned(由编译器决定)明确无符号(仅非负数)数值范围通常 -128 到 1270…...

硬件电路(24)-NE555振荡电路

一、概述 NE555 是一款能产生高精度定时脉冲的双极性集成电路。内部包括阈值比较器、触发比较器、RS触发 器、输出电路等四部分电路构成。它可通过外接少量的阻容器件,组成定时触发电路、脉宽调制电路、音 频振荡器等等电路。广泛应用于玩具、信号交通、自动化控制等…...

Transformer系列(二):自注意力机制框架

自注意力机制框架 一、K-Q-V的自注意力机制二、位置表征1. 通过学习嵌入来进行位置表征2. 通过直接改变 α \alpha α来进行位置表征 三、逐元素非线性变换四、未来掩码(future mask)五、总结 上篇博客:NLP中放弃使用循环神经网络架构讲解了循环神经网络…...

安全技术和防火墙

传输层4.7层防火墙 传输层(4)四层防火墙:ip地址 mac地址 协议 端口号来控制数据流量 应用层防火(7)墙/代理服务器: ip地址 mac地址 协议 端口号来控制数据流量 真实传输的数据(把前面的ip地址…...

深度可分离卷积与普通卷积的区别及原理

1. 普通卷积 普通卷积使用一个滤波器在输入特征图的所有通道上滑动,同时对所有通道进行加权求和,生成一个输出通道。如果有多个滤波器,则生成多个输出通道。假设上一层的特征图有 n 个通道,每个通道是一个二维的图像(…...

STM32时钟树

1、认识时钟树 H:high 高 L:low 低 S:speed 速度 I:internal 内部 E:external 外部 HSE就是高速外部时钟源 HSI就是告诉内部时钟源 外部时钟一般需要接一个时钟源,也就是晶振,这个需要外接&…...

致迈协创C1pro考勤系统简介

1.应用背景 该套件的“数据映射引擎”技术,完成了OA系统与考勤机硬件设备的无缝联接。V5具有良好交互特性和B/S的程序架构,使得客户管理层和HR相关管理人员通过V5能实时查询统计人员的考勤情况,从而及时有效的完成人员考勤的监控与管理&#…...

pivot_root:原理、用途及最简单 Demo

什么是 pivot_root pivot_root 是 Linux 系统中的一个系统调用(和对应的命令行工具),用于更改进程的根文件系统。与 chroot 类似,pivot_root 将一个指定目录设置为进程的新根目录(/),但它比 ch…...

【小沐杂货铺】基于Three.JS绘制卫星轨迹Satellite(GIS 、WebGL、vue、react,提供全部源代码)

🍺三维数字地球系列相关文章如下🍺:1【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第一期2【小沐学GIS】基于C绘制三维数字地球Earth(OpenGL、glfw、glut)第二期3【小沐学GIS】…...

MySQL -数据类型

博客主页:【夜泉_ly】 本文专栏:【暂无】 欢迎点赞👍收藏⭐关注❤️ 目录 前言数值类型intbitfloat 字符串charvarcharenum set 日期和时间类型 前言 在之前的操作篇, 我们用到的大多是DDL(数据定义语言)。 在建表时,…...

数据通信学习笔记之OSPF的邻居角色

邻居与邻接 OSPF 使用 Hello 报文发现和建立邻居关系 在以太网链路上,缺省时,OSPF 采用组播的形式发送 Hello 报文 (目的地址 224.0.0.5) OSPF Hello 报文中包含了路由器的 RouterID、邻居列表等信息。 邻居状态: 邻居:2-way 邻…...

2025第十六届蓝桥杯python B组满分题解(详细)

目录 前言 A: 攻击次数 解题思路: 代码: B: 最长字符串 解题思路: 代码: C: LQ图形 解题思路: 代码: D: 最多次数 解题思路: 代码: E: A * B Problem 解题思路&…...

计算机组成原理笔记(十七)——4.2定点加减运算

定点数的加减运算包括原码、补码和反码3种带符号数的加减运算,其中补码加减运算实现起来最方便。 4.2.1原码加减运算 原码加减运算详解 原码是计算机中表示数值的基本方式之一,其特点为最高位为符号位(0表正,1表负)…...

javase 学习

一、Java 三大版本 javaSE 标准版 (桌面程序; 控制台开发) javaME 嵌入式开发(手机、小家电)基本不用,已经淘汰了 javaEE E业级发开(web端、 服务器开发) 二、Jdk ,jre jvm 三…...

成品检验工程师心得总结

岗位:成品检验助理工程师 成品检验工程师——————>OQC工程师 何为成品? 简单来说,就是已经完成了产品的开发,测试,满足客户所有需求开发的产品。 成品检验工程师对应的是哪一个角色? 客户&…...

操作系统:进程是一个非常重要的抽象概念

在操作系统中,进程是一个非常重要的抽象概念,它是程序在计算机上的执行实例,是系统进行资源分配和调度的基本单位。 一、进程的定义 从动态角度来说,进程是程序的一次执行过程。例如,当你在计算机上打开一个文本编辑…...

QML 字符串格式化

在 QML 中,处理字符串格式化有多种方法,以下是常用的字符串格式化函数和技巧: 1. 基本字符串连接 qml var str "Hello, " "QML!"; // 简单连接 var name "Alice"; var greeting Hello, ${name}; // 模…...

堆排序的C++相关实现

大根堆的实现 #include <iostream> #include <vector> using namespace std;// 调整堆&#xff0c;确保以i根节点的子树满足大根堆 void heapify(vector<int>& vec, int n , int i) {int largest i;int left 2 * i 1;int right 2 * i 2;if (left &…...

c++类与对象(一)

前言&#xff1a; 什么是面向对象编程&#xff1f;什么是类与对象&#xff1f;为啥要搞类与对象啊&#xff1f;凭什么c能支持面向对象编程啊&#xff1f; 每次学东西前问自己几个问题会挺爽的&#xff0c;因为你越是懵逼&#xff0c;你就越想知道答案是什么。希望我的这几篇文章…...

(二)mac中Grafana监控Linux上的MySQL(Mysqld_exporter)

框架&#xff1a;GrafanaPrometheusMysqld_exporter 一、监控查看端安装 Grafana安装-CSDN博客 普罗米修斯Prometheus监控安装&#xff08;mac&#xff09;-CSDN博客 1.启动Grafana服务 brew services start grafana 打开浏览器输入http://localhost:3000进入grafana登录…...

认知升级:把握人工智能教育化转型的历史机遇

认知升级&#xff1a;把握人工智能教育化转型的历史机遇 ----灌南县第四中学 孟祥帅 2025年4月17日至19日&#xff0c;我有幸参加了教育部主办的“全国人工智能校长局长专题培训班”。此次大会以“人工智能赋能教育现代化”为主题&#xff0c;汇聚了全国各地的教育局局长、校…...

人形机器人马拉松:北京何以孕育“领跑者”?

“机器人每跑一小步&#xff0c;都是人类科技的一大步”&#xff0c;这句对阿姆斯特朗登月名言的仿写&#xff0c;恰如其分地诠释了全球首场人形机器人半程马拉松赛事的里程碑意义。 2025年4月19日&#xff0c;北京亦庄半程马拉松暨人形机器人半程马拉松圆满结束。在总长21.09…...

HBuilder X:前端开发的终极生产力工具

一、极速下载与部署指南 官方下载地址&#xff1a;HBuilderX-高效极客技巧 HBuilder X 提供轻量化绿色发行包&#xff08;仅 10 余 MB&#xff09;&#xff0c;支持 Windows、macOS、Linux 全平台。 安装流程&#xff1a; Windows 用户&#xff1a; 下载.zip压缩包后解压至非系…...

对于校园网如何进行用户识别——captive portal的原理学习总结

一、技术名称总结 这一技术的核心称为 Captive Portal&#xff08;强制门户&#xff09;&#xff0c;中文常译为“认证门户”或“强制门户”。它是通过拦截未认证用户的网络流量&#xff0c;强制跳转到指定登录页面的技术。 二、技术提供方与部署逻辑 Captive Portal的实现主…...

肖特基二极管详解:原理、作用、应用与选型要点

一、肖特基二极管的基本定义 肖特基二极管&#xff08;Schottky Diode&#xff09; 是一种基于金属-半导体结&#xff08;肖特基势垒&#xff09;的二极管&#xff0c;其核心特性是低正向压降&#xff08;Vf≈0.3V&#xff09;和超快开关速度。 结构特点&#xff1a;阳极采用金…...