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

【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录

安装Matplotlib

1.打开PyCharm:

2.打开终端:

3.安装Matplotlib:

4.确认安装:

导入Matplotlib

创建简单的折线图

代码解析:

创建子图

代码解析:

创建柱状图

代码解析:

创建散点图

代码解析:

创建直方图

代码解析:

多图形组合

代码解析:

保存图形

代码解析:

结论

实战案例:数据分析与可视化

数据集说明

1. 导入库和数据准备

2. 折线图:展示销售趋势

代码解析:

3. 柱状图:展示销售和费用比较

代码解析:

4. 散点图:展示客户数量与销售额关系

代码解析:

5. 直方图:展示销售额分布

代码解析:

6. 组合图:展示多种数据

代码解析:


 

专栏:数学建模学习笔记

pycharm专业版免费激活教程见资源

python相关库的安装:pandas,numpy,matplotlib,statsmodels

总篇:【数学建模】—【新手小白到国奖选手】—【学习路线】

第一卷:【数学建模】—【Python库】—【Numpy】—【学习】

第二卷:【数学建模】——【python库】——【Pandas学习】

本章属于第三卷Matplotlib的学习

安装Matplotlib

在开始使用Matplotlib之前,必须先在你的Python环境中安装它。PyCharm提供了一种方便的方法来安装第三方库。下面是如何在PyCharm中安装Matplotlib的详细步骤:

1.打开PyCharm

  • 打开PyCharm并创建或打开一个现有的项目。

2.打开终端

  • 点击右下角的Terminal标签以打开终端窗口。

3.安装Matplotlib

在终端中输入以下命令并按Enter键:

pip install matplotlib

4.确认安装

import matplotlib.pyplot as plt

你可以通过再次在终端中运行以下命令来确认安装是否成功:

pip show matplotlib

导入Matplotlib

安装成功后,你需要在你的Python脚本中导入Matplotlib库。通常我们会使用以下导入语句:

  • matplotlib.pyplot 是Matplotlib库中的一个子模块,它提供了类似于MATLAB的绘图接口。
  • plt 是一个常见的缩写,用于简化代码书写。

创建简单的折线图

折线图是一种显示数据变化趋势的基本图表类型。以下是一个创建简单折线图的详细步骤和代码解析:

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建图形
plt.plot(x, y)# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建图形:使用plt.plot(x, y)方法绘制折线图。plot方法的第一个参数是x轴数据,第二个参数是y轴数据。
  4. 添加标题和标签:使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形:使用plt.show()方法显示图形。

创建子图

子图用于在同一个图形窗口中展示多个图表。以下是一个创建两个子图的详细示例:

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]# 创建子图
fig, (ax1, ax2) = plt.subplots(2, 1)# 第一个子图
ax1.plot(x, y1)
ax1.set_title('First Subplot')# 第二个子图
ax2.plot(x, y2)
ax2.set_title('Second Subplot')# 调整布局
plt.tight_layout()# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建三个列表xy1y2,分别表示两个子图的x轴和y轴数据。
  3. 创建子图:使用plt.subplots方法创建一个包含两个子图的图形。plt.subplots(2, 1)表示创建一个两行一列的子图布局,fig是图形对象,ax1ax2是两个子图对象。
  4. 绘制子图:分别使用ax1.plotax2.plot方法绘制两个子图。
  5. 添加标题:分别使用ax1.set_titleax2.set_title方法为两个子图添加标题。
  6. 调整布局:使用plt.tight_layout()方法自动调整子图布局,使其不重叠。
  7. 显示图形:使用plt.show()方法显示图形。

创建柱状图

柱状图用于展示分类数据的分布。以下是一个创建简单柱状图的详细示例:

import matplotlib.pyplot as plt# 数据
categories = ['A', 'B', 'C', 'D', 'E']
values = [5, 7, 3, 8, 6]# 创建柱状图
plt.bar(categories, values)# 添加标题和标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建两个列表categoriesvalues,分别表示分类和对应的值。
  3. 创建柱状图:使用plt.bar(categories, values)方法创建柱状图。第一个参数是分类,第二个参数是对应的值。
  4. 添加标题和标签:使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形:使用plt.show()方法显示图形。

创建散点图

散点图用于显示两个变量之间的关系。以下是一个创建简单散点图的详细示例:

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建散点图
plt.scatter(x, y)# 添加标题和标签
plt.title('Simple Scatter Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建散点图:使用plt.scatter(x, y)方法创建散点图。scatter方法的第一个参数是x轴数据,第二个参数是y轴数据。
  4. 添加标题和标签:使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形:使用plt.show()方法显示图形。

创建直方图

直方图用于展示数据的频率分布。以下是一个创建简单直方图的详细示例:

import matplotlib.pyplot as plt# 数据
data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 5]# 创建直方图
plt.hist(data, bins=5, edgecolor='black')# 添加标题和标签
plt.title('Simple Histogram')
plt.xlabel('Value')
plt.ylabel('Frequency')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建一个列表data,表示数据样本。
  3. 创建直方图:使用plt.hist(data, bins=5, edgecolor='black')方法创建直方图。hist方法的第一个参数是数据样本,bins参数表示直方图的柱子数量,edgecolor参数设置柱子的边框颜色。
  4. 添加标题和标签:使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 显示图形:使用plt.show()方法显示图形。

多图形组合

在同一个图形中组合多种不同类型的图形可以让你更全面地展示数据。以下是一个组合折线图和散点图的详细示例:

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y1 = [1, 4, 9, 16, 25]
y2 = [1, 3, 6, 10, 15]# 创建图形和子图
fig, ax1 = plt.subplots()# 绘制第一个数据集
ax1.plot(x, y1, 'g-')  # 绿色实线
ax1.set_xlabel('X data')
ax1.set_ylabel('Y1 data', color='g')# 创建第二个Y轴
ax2 = ax1.twinx()
ax2.plot(x, y2, 'b--')  # 蓝色虚线
ax2.set_ylabel('Y2 data', color='b')# 添加标题
plt.title('Multiple Data Sets')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建三个列表xy1y2,分别表示两个数据集的x轴和y轴数据。
  3. 创建图形和子图:使用plt.subplots()方法创建图形和子图对象。fig是图形对象,ax1是第一个子图对象。
  4. 绘制第一个数据集:使用ax1.plot(x, y1, 'g-')方法绘制第一个数据集。参数'g-'表示绿色实线。
  5. 设置第一个Y轴标签:使用ax1.set_xlabelax1.set_ylabel方法设置第一个子图的x轴和y轴标签,color参数设置标签颜色。
  6. 创建第二个Y轴:使用ax1.twinx()方法创建第二个Y轴。
  7. 绘制第二个数据集:使用ax2.plot(x, y2, 'b--')方法绘制第二个数据集。参数'b--'表示蓝色虚线。
  8. 设置第二个Y轴标签:使用ax2.set_ylabel方法设置第二个子图的y轴标签,color参数设置标签颜色。
  9. 添加标题:使用plt.title方法为整个图形添加标题。
  10. 显示图形:使用plt.show()方法显示图形。

保存图形

创建图形后,你可能需要将其保存到文件中。Matplotlib允许你将图形保存为多种格式,包括PNG、PDF、SVG等。以下是一个保存图形为PNG文件的详细示例:

import matplotlib.pyplot as plt# 数据
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]# 创建图形
plt.plot(x, y)# 添加标题和标签
plt.title('Simple Line Plot')
plt.xlabel('X Axis')
plt.ylabel('Y Axis')# 保存图形
plt.savefig('line_plot.png')# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 数据准备:创建两个列表xy,分别表示横轴和纵轴的数据点。
  3. 创建图形:使用plt.plot(x, y)方法绘制折线图。
  4. 添加标题和标签:使用plt.title方法添加图形的标题,使用plt.xlabelplt.ylabel方法为横轴和纵轴添加标签。
  5. 保存图形:使用plt.savefig('line_plot.png')方法将图形保存为PNG文件。你可以根据需要更改文件名和文件格式,例如line_plot.pdfline_plot.svg
  6. 显示图形:使用plt.show()方法显示图形。

结论

Matplotlib是一个功能强大且灵活的Python库,非常适合用于数学建模和数据可视化。通过以上详细的示例和解析,你可以掌握Matplotlib的基本用法,并在实际项目中应用这些技能进行数据分析和展示。随着你对Matplotlib的深入了解,你可以进一步探索更多高级功能,如自定义图形样式、添加图例、调整图形布局等,使你的图形更具专业性和表现力。

实战案例:数据分析与可视化

为了更好地理解和应用Matplotlib,我们将通过一个实际案例来展示如何使用Matplotlib进行数据分析与可视化。我们将分析一个虚构的数据集,该数据集包含某家公司在不同月份的销售数据,并展示如何绘制折线图、柱状图、散点图、直方图和组合图。

数据集说明

我们假设有一个包含以下信息的数据集:

  • month: 月份(1月到12月)
  • sales: 销售额(单位:千元)
  • expenses: 费用(单位:千元)
  • customers: 客户数量

数据如下:

data = {'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],'sales': [20, 34, 30, 35, 27, 25, 30, 32, 31, 29, 28, 35],'expenses': [12, 17, 18, 23, 22, 19, 20, 21, 19, 20, 18, 22],'customers': [200, 240, 230, 250, 220, 210, 230, 240, 235, 220, 215, 250]
}

1. 导入库和数据准备

首先,导入必要的库并准备数据:

import matplotlib.pyplot as pltdata = {'month': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],'sales': [20, 34, 30, 35, 27, 25, 30, 32, 31, 29, 28, 35],'expenses': [12, 17, 18, 23, 22, 19, 20, 21, 19, 20, 18, 22],'customers': [200, 240, 230, 250, 220, 210, 230, 240, 235, 220, 215, 250]
}

2. 折线图:展示销售趋势

折线图适合用来展示数据随时间的变化趋势。我们来绘制销售额随月份变化的折线图:

plt.plot(data['month'], data['sales'], marker='o', linestyle='-', color='b')
plt.title('Monthly Sales')
plt.xlabel('Month')
plt.ylabel('Sales (in thousands)')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制折线图:使用plt.plot方法绘制折线图,marker='o'表示数据点使用圆形标记,linestyle='-'表示实线,color='b'表示蓝色。
  4. 添加标题和标签:使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格:使用plt.grid(True)方法显示网格线。
  6. 显示图形:使用plt.show()方法显示图形。

3. 柱状图:展示销售和费用比较

柱状图适合用来比较不同类别的数据。我们来绘制销售额和费用的柱状图:

import numpy as np# 设置柱的宽度和位置
bar_width = 0.35
index = np.arange(len(data['month']))# 创建柱状图
plt.bar(index, data['sales'], bar_width, label='Sales', color='b')
plt.bar(index + bar_width, data['expenses'], bar_width, label='Expenses', color='r')# 添加标题和标签
plt.xlabel('Month')
plt.ylabel('Amount (in thousands)')
plt.title('Sales vs Expenses')
plt.xticks(index + bar_width / 2, data['month'])
plt.legend()# 显示图形
plt.show()

代码解析:

  1. 导入库:除了matplotlib.pyplot,还需要导入numpy来处理数组和索引。
  2. 设置柱的宽度和位置:使用bar_width设置每个柱子的宽度,使用np.arange创建一个数组表示每个柱子的x轴位置。
  3. 创建柱状图:使用plt.bar方法绘制柱状图,第一个参数是x轴位置,第二个参数是数据值,bar_width设置柱子的宽度,label设置图例标签,color设置颜色。
  4. 添加标题和标签:使用plt.xlabelplt.ylabelplt.title方法添加图形标题和轴标签。
  5. 设置x轴刻度:使用plt.xticks方法设置x轴刻度的位置和标签。
  6. 添加图例:使用plt.legend()方法显示图例。
  7. 显示图形:使用plt.show()方法显示图形。

 

 

4. 散点图:展示客户数量与销售额关系

散点图适合用来展示两个变量之间的关系。我们来绘制客户数量与销售额的散点图:

plt.scatter(data['customers'], data['sales'], color='g')
plt.title('Customers vs Sales')
plt.xlabel('Number of Customers')
plt.ylabel('Sales (in thousands)')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制散点图:使用plt.scatter方法绘制散点图,第一个参数是x轴数据,第二个参数是y轴数据,color参数设置数据点颜色。
  4. 添加标题和标签:使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格:使用plt.grid(True)方法显示网格线。
  6. 显示图形:使用plt.show()方法显示图形。

 

 

5. 直方图:展示销售额分布

直方图适合用来展示数据的频率分布。我们来绘制销售额的直方图:

plt.hist(data['sales'], bins=5, edgecolor='black')
plt.title('Sales Distribution')
plt.xlabel('Sales (in thousands)')
plt.ylabel('Frequency')
plt.grid(True)
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 绘制直方图:使用plt.hist方法绘制直方图,第一个参数是数据样本,bins参数设置直方图的柱子数量,edgecolor参数设置柱子的边框颜色。
  4. 添加标题和标签:使用plt.titleplt.xlabelplt.ylabel方法添加图形标题和轴标签。
  5. 显示网格:使用plt.grid(True)方法显示网格线。
  6. 显示图形:使用plt.show()方法显示图形。

6. 组合图:展示多种数据

组合图可以同时展示多种类型的数据。我们来创建一个组合图,包含折线图和柱状图:

fig, ax1 = plt.subplots()# 折线图:销售额
ax1.plot(data['month'], data['sales'], 'b-', marker='o', label='Sales')
ax1.set_xlabel('Month')
ax1.set_ylabel('Sales (in thousands)', color='b')
ax1.tick_params('y', colors='b')# 创建第二个Y轴
ax2 = ax1.twinx()
ax2.bar(data['month'], data['expenses'], alpha=0.6, color='r', label='Expenses')
ax2.set_ylabel('Expenses (in thousands)', color='r')
ax2.tick_params('y', colors='r')# 添加标题
plt.title('Monthly Sales and Expenses')# 添加图例
fig.tight_layout()
fig.legend(loc='upper left', bbox_to_anchor=(0.1,0.9))# 显示图形
plt.show()

代码解析:

  1. 导入库:使用import matplotlib.pyplot as plt导入Matplotlib库。
  2. 准备数据:使用字典形式准备数据。
  3. 创建图形和子图:使用plt.subplots()方法创建图形和子图对象。fig是图形对象,ax1是第一个子图对象。
  4. 绘制折线图:使用ax1.plot方法绘制折线图,设置折线图颜色和标记样式。
  5. 设置第一个Y轴标签:使用ax1.set_xlabelax1.set_ylabel方法设置第一个子图的x轴和y轴标签,color参数设置标签颜色。
  6. 创建第二个Y轴:使用ax1.twinx()方法创建第二个Y轴。
  7. 绘制柱状图:使用ax2.bar方法绘制柱状图,设置柱状图颜色和透明度。
  8. 设置第二个Y轴标签:使用ax2.set_ylabel方法设置第二个子图的y轴标签,color参数设置标签颜色。
  9. 添加标题:使用plt.title方法为整个图形添加标题。
  10. 调整布局和添加图例:使用fig.tight_layout()方法自动调整布局,使用fig.legend方法添加图例,设置图例的位置。
  11. 显示图形:使用plt.show()方法显示图形。

 

 

相关文章:

【Python数据分析与可视化】:使用【Matplotlib】实现销售数据的全面分析 ——【Matplotlib】数模学习

目录 安装Matplotlib 1.打开PyCharm: 2.打开终端: 3.安装Matplotlib: 4.确认安装: 导入Matplotlib 创建简单的折线图 代码解析: 创建子图 代码解析: 创建柱状图 代码解析: 创建散点…...

Docker加速器配置指南:提升镜像下载速度的秘诀 加速安装Mysql Redis ES

在安装 Docker 镜像时,由于官方镜像下载速度较慢,我们可以使用阿里云的镜像加速器来提升下载速度。 使用阿里云镜像加速器 首先,找到并配置阿里云的镜像加速器。安装教程如下: 登录阿里云,进入容器镜像服务。直达链…...

32单片机,C语言与汇编联合编译的几种方式

适用编译器:Keil5 方式一: 单独创建一个.s汇编文件,在汇编文件内对函数进行EXPORT声明 r0寄存器是函数传入的第一个参数,r1寄存器是函数传入的第二个参数,以次类推。参数最多不确定是到r4为止,还是到r12…...

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM

基于GWO-CNN-BiLSTM数据回归预测(多输入单输出)-灰狼优化算法优化CNN-BiLSTM 1.数据均为Excel数据,直接替换数据就可以运行程序。 2.所有程序都经过验证,保证程序可以运行。 3.具有良好的编程习惯,程序均包含简要注释。 获取方式 https:/…...

自动控制:反馈控制

自动控制:反馈控制 反馈控制(Feedback Control)是一种在控制系统中通过测量输出信号,并将其与期望信号进行比较,产生误差信号,再根据误差信号调整输入来达到控制目标的方法。反馈控制是自动控制系统中最常…...

sqlite 数据库 介绍

文章目录 前言一、什么是 SQLite ?二、语法三、SQLite 场景四、磁盘文件 前言 下载 目前已经出到了, Version 3.46.0 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是…...

【机器学习】机器学习重塑广告营销:精准触达,高效转化的未来之路

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀目录 📒1. 引言📙2. 机器学习基础与广告营销的结合🧩机器学习在广告营销中的核心应用领域🌹用…...

常见的Java运行时异常

常见的Java运行时异常 1、ArithmeticException(算术异常)2、ClassCastException (类转换异常)3、IllegalArgumentException (非法参数异常)4、IndexOutOfBoundsException (下标越界异常&#xf…...

CANoe的capl调用Qt制作的dll

闲谈 因为Qt封装了很多个人感觉很好用的库,所以一直想通过CAPL去调用Qt实现一些功能,但是一直没机会(网络上也没看到这方面的教程),这次自己用了两天,踩了很多坑,终于是做成了一个初步的调用方…...

论如何搭建属于自己的服务器?

在现如今的数字化时代中,为了能够搭建网站和运行应用程序,很多人选择搭建属于自己的服务器,下面我们就来了解一下如何搭建服务器吧! 搭建服务器我们首先需要选择适合自身需求的硬件设备,其中包含内存、CPU和存储等配置…...

【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算

原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…...

STMF4学习笔记RTC(天空星)

前言&#xff1a;本篇笔记参考嘉立创文档&#xff0c;连接放在最后 #RTC相关概念定义 Real-Time Clock 缩写 RTC 翻译 实时时钟&#xff0c;是单片机片内外设的一种&#xff0c;作用于提供准确的时间还有日期&#xff0c;这个外设有独立的电源&#xff0c;当单片机停止供电…...

vue数组变化的侦测***

数组变化的侦测 变更方法 vue能够侦听响应式数组的变更方法&#xff0c;并在他们被调用时触发相关更新。这些变更方法包括&#xff1a; push()pop()shift()unshift()splice()sort()reverse() 替换一个数组 变更方法&#xff0c;顾名思义&#xff0c;就是会对调用他们的原数组进…...

k8s-第十节-Ingress

Ingress 介绍 Ingress 为外部访问集群提供了一个 统一 入口&#xff0c;避免了对外暴露集群端口&#xff1b;功能类似 Nginx&#xff0c;可以根据域名、路径把请求转发到不同的 Service。可以配置 https 跟 LoadBalancer 有什么区别&#xff1f; LoadBalancer 需要对外暴露…...

webrtc gcc详解

webrtc的gcc算法(Google Congestion Control)&#xff0c;貌似国内很多文章都没有细讲&#xff0c;原理是怎么样的&#xff0c;具体怎么进行计算的。这里详解一下gcc。 gcc算法&#xff0c;主要涉及到&#xff1a; 拥塞控制的关键信息和公式 卡曼滤波算法 gcc如何使用卡曼滤…...

Linux多进程和多线程(七)进程间通信-信号量

进程间通信之信号量 资源竞争 多个进程竞争同一资源时&#xff0c;会发生资源竞争。 资源竞争会导致进程的执行出现不可预测的结果。 临界资源 不允许同时有多个进程访问的资源, 包括硬件资源 (CPU、内存、存储器以及其他外 围设备) 与软件资源(共享代码段、共享数据结构) …...

【项目日记(一)】梦幻笔耕-数据层实现

❣博主主页: 33的博客❣ ▶️文章专栏分类:项目日记◀️ &#x1f69a;我的代码仓库: 33的代码仓库&#x1f69a; &#x1faf5;&#x1faf5;&#x1faf5;关注我带你了解更多项目内容 目录 1.前言2.后端模块3数据库设计4.mapper实现4.1UserInfoMapper4.2BlogMapper 5.总结 1.…...

ElementUI的中国省市区级联数据插件element-china-area-data

安装 npm install element-china-area-data -S import 使用 import {provinceAndCityData,pcTextArr,regionData,pcaTextArr,codeToText, } from "element-china-area-data"; provinceAndCityData省市二级联动数据,汉字+coderegionData省市区三级联动数据pcTextAr…...

Kotlin算法:把一个整数向上取值为最接近的2的幂指数值

Kotlin算法&#xff1a;把一个整数向上取值为最接近的2的幂指数值 import kotlin.math.ln import kotlin.math.powfun main(args: Array<String>) {val number intArrayOf(2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)number.forEach {println("$…...

简单且循序渐进地查找软件中Bug的实用方法

“Bug”这个词常常让许多开发者感到头疼。即使是经验丰富、技术娴熟的开发人员在开发过程中也难以避免遭遇到 Bug。 软件中的故障会让程序员感到挫败。我相信在你的软件开发生涯中&#xff0c;也曾遇到过一些难以排查的问题。软件中的错误可能会导致项目无法按时交付。因此&…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

Zustand 状态管理库:极简而强大的解决方案

Zustand 是一个轻量级、快速和可扩展的状态管理库&#xff0c;特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...