Python数据可视化-第7章-绘制3D图表和统计地图
环境
开发工具
VSCode
库的版本
numpy==1.26.4
matplotlib==3.10.1
ipympl==0.9.7
教材
本书为《Python数据可视化》一书的配套内容,本章为第7章 绘制3D图表和统计地图
本章首先介绍了使用mplot3d工具包绘制3D图表,然后介绍了使用animation模块制作动画,最后介绍了使用basemap工具包绘制统计地图。通过对本章的学习,希望读者能够掌握这些工具包和动画模块的基本用法。
参考
第7章-绘制3D图表和统计地图
7.1 使用mplot3d绘制3D图表
7.1.1 mplot3d概述
matplotlib不仅专注于二维图表的绘制,也具有绘制3D图表、统计地图的功能,并将这些功能分别封装到工具包mpl_toolkits.mplot3d、mpl_toolkits.basemap中,另外可以结合animation模块给图表添加动画效果。
mplot3d是matplotlib中专门绘制3D图表的工具包,它提供了一个重要的类Axes3D,该类继承自Axes类,使用Axes3D类可以构建一个三维坐标系的绘图区域。
通过以下两种方式可以创建Axes3D类的对象。
第一种:Axes3D()方法。
第二种:add_subplot()方法。
Axes3D()方法
Axes3D()是构造方法,它直接用于构建一个Axes3D类的对象。
Axes3D(fig, rect=None, *args, azim=-60, elev=30, zscale=None,
sharez=None, proj_type='persp', **kwargs)
fig:表示绘图区域所属的
画布
。
rect:表示绘图区域的位置
,它的值是一个元组(left, bottom, width, height)
,元组中的前两个元素表示绘图区域左侧、底部到画布左侧、底部的距离与画布宽度、高度的比例,后两个元素表示绘图区域的宽度和高度与画布宽度、高度的比例。
azim :表示方位角
,默认值是-60度。
elev:表示仰角
,默认值是30度。
proj_type:表示投影类型
,该参数支持两种取值’persp’(透视图)和 ‘ortho’(正交视图),默认值为’persp’。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
plt.show()
add_subplot()方法
在调用add_subplot()方法添加绘图区域时为该方法传入projection=‘3d’,即指定坐标系的类型为三维坐标系,并返回一个Axes3D类的对象。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
print(type(ax))
plt.show()
输出如下:
官方
推荐使用add_subplot()方法
创建Axes3D类的对象。
Axes3D类中提供了一些用于设置标题和坐标轴的方法
,关于这些方法及说明具体如下表所示。
7.1.2 绘制常见的3D图表
常见的3D图表包括3D线框图、3D曲面图、3D柱形图、3D散点图等。 Axes3D类中提供了一些
绘制3D图表的方法
,关于这些方法及其说明如下表所示。
绘制3D线框图 plot_wireframe()方法
Axes3D类的对象使用plot_wireframe()方法绘制3D线框图。
plot_wireframe(self, X, Y, Z, *args, **kwargs)
X,Y,Z:表示x、y、z轴的数据。
rcount,ccount:表示每个轴方向上使用的最大样本量,默认为50。若输入的样本量更大,则会采用降采样的方式减少样本的数量;若输入的样本量为0,则不会对相应轴方向的数据进行采样。
rstride,cstride:表示采样的密度。若仅使用参数rstride或cstride中任意一个,则另一个参数默认为1。
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 获取测试数据
X, Y, Z = axes3d.get_test_data(0.05)
# 绘制 3D线框图
ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
plt.show()
输出如下:
绘制3D曲面图-plot_surface()方法
Axes3D类的对象使用plot_surface()方法绘制3D曲面图。
plot_surface(self, X, Y, Z, *args, norm=None, vmin=None, vmax=None,
lightsource=None, **kwargs)
X,Y,Z:表示x、y、z轴的数据。
rcount,ccount:表示每个坐标轴方向上使用的最大样本量,默认为50。
rstride,cstride:表示采样的密度。
color:表示曲面的颜色。
cmap:表示曲面的颜色映射表。
shade:表示是否对曲面进行着色。注意,若使用cmap参数,则不可以使用shade参数。
linewidth :表示线宽。
antialiased:表示是否抗锯齿。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np
x1 = np.arange(-5, 5, 0.25)
y1 = np.arange(-5, 5, 0.25)
print(x1.shape,"\n",x1)
print(y1.shape,"\n",y1)
print("---------")
x1, y1 = np.meshgrid(x1, y1)
print(x1.shape,"\n",x1)
print(y1.shape,"\n",y1)
print("---------")
r1 = np.sqrt(x1** 2 + y1 ** 2)
z1 = np.sin(r1)
print(r1.shape,"\n",r1)
print(z1.shape,"\n",z1)
print("---------")
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制曲面图
ax.plot_surface(x1, y1, z1, cmap=cm.coolwarm, linewidth=0, antialiased=False)
# 设置 z 轴刻度的范围、位置、格式
ax.set_zlim(-1.01, 1.01)
plt.show()
输出如下:
7.1.3 实例1:三维空间的星星
本实例要求根据一组测试数据,绘制包含若干个五角星的3D散点图。
# 01_stars_in_3d
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 生成测试数据
x = np.random.randint(0, 40, 5)
y = np.random.randint(0, 40, 5)
z = np.random.randint(0, 40, 5)
# 创建三维坐标系的绘图区域, 并在该区域中绘制3D散点图
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
for xx, yy, zz in zip(x, y, z):print(xx, " ",yy, " ",zz)color = 'y'if 10 < zz < 20:color = '#C71585'elif zz >= 20:color = '#008B8B'ax.scatter(xx, yy, zz+3, c=color, marker='*', s=160, linewidth=1, edgecolor='black')ax.text(xx, yy, zz, f'({xx}, {yy}, {zz})', fontsize=10, ha='center', va='bottom')
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()
输出如下:
38 11 22
0 9 10
20 3 29
15 31 16
29 2 23
7.2 使用animation制作动图
7.2.1 animation概述
matplotlib在1.1版本的标准库中加入了动画模块——animation,使用该模块的Animation类可以实现一些基本的动画效果。Animation类是一个动画基类。
FuncAnimation类
FuncAnimation是基于函数的动画类,它通过重复地调用同一函数来制作动画。
FuncAnimation(fig, func, frames=None, init_func=None, fargs=None,
save_count=None, *, cache_frame_data=True, **kwargs)
fig:表示动画所在的画布。
func:表示每帧动画调用的函数,该函数会被matplotlib库自动调用,并在被调用时将frames中迭代的下一个值传递给它的第一个参数。
frames:表示动画的长度(一次动画包含的帧数),该参数的值是一个可迭代对象。
init_func:表示用于开始绘制帧的函数,它会在第一帧动画之前调用一次。若未设置该参数,则程序将使用frames 中第一项的绘图结果。
fargs:表示传递给func函数的其它参数。
interval:表示更新动画的频率,以毫秒为单位,默认为200。
blit:表示是否更新所有的点,默认为False。
# 以qt5为图形界面后端
# %matplotlib 可以使用的后端有:
# inline:将图形嵌入到Jupyter Notebook中
# notebook:将图形嵌入到Jupyter Notebook中
# qt5:在单独的窗口中显示图形
# wx:在单独的窗口中显示图形
# tk:在单独的窗口中显示图形
# osx:在单独的窗口中显示图形
# pdf:将图形保存为PDF文件
# svg:将图形保存为SVG文件
# ps:将图形保存为PS文件
# agg:将图形保存为AGG文件
# svgz:将图形保存为SVGZ文件# %matplotlib widget
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation # 导入动画类
x = np.arange(0, 2 *np.pi, 0.01)
fig, ax = plt.subplots()
line, = ax.plot(x, np.sin(x))
# 定义每帧动画调用的函数
def animate(i):line.set_ydata(np.sin(x + i / 10.0))if(i%10==0):# ax.text(1+i%2, 0, i)print(i)passreturn line
# 定义初始化帧的函数
def init():line.set_ydata(np.sin(x))return line
ani = FuncAnimation(fig=fig, func=animate, frames=100, init_func=init, interval=20, blit=False)
plt.show()
ArtistAnimation类
ArtistAnimation是基于一组Artist对象的动画类,它通过每帧绘制一个或一组Artist对象制作动画。
ArtistAnimation(fig, artists, interval, repeat_delay, repeat,
blit, *args, **kwargs)
fig:表示动画所在的画布。
artists:表示一组Artist 对象的列表。
interval:表示更新动画的频率,以毫秒为单位,默认为200。
repeat_delay:表示再次播放动画之前延迟的时长。
repeat:表示是否重复播放动画。
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import ArtistAnimation
x = np.arange(0, 2 * np.pi, 0.01)
fig, ax = plt.subplots()
arr = []
for i in range(5):line = ax.plot(x, np.sin(x + i))arr.append(line)# 根据arr存储的一组图形创建动画
ani = ArtistAnimation(fig=fig, artists=arr, repeat=True)
plt.show()
大家希望将动画存储为视频文件,可以先安装ffmpeg或mencoder,之后使用Animation类的save()方法将每一帧动画存储为视频文件。
7.2.2 实例2:三维空间闪烁的星星
本实例要求在7.1.3绘制的3D散点图中添加动画,实现五角星由红色到白色最的闪烁效果 。
# 02_twinkling_stars_in_3d
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.animation import FuncAnimation
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 生成测试数据
xx = np.array([13, 5, 25, 13, 9, 19, 3, 39, 13, 27])
yy = np.array([4, 38, 16, 26, 7, 19, 28, 10, 17, 18])
zz = np.array([7, 19, 6, 12, 25, 19, 23, 25, 10, 15])
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制初始的3D散点图
star = ax.scatter(xx, yy, zz, c='#C71585', marker='*', s=160, linewidth=1, edgecolor='black')
# 每帧动画调用的函数
def animate(i):if i % 2:color = '#C71585'else:color = 'white'next_star = ax.scatter(xx, yy, zz, c=color, marker='*', s = 160, linewidth=1, edgecolor='black')return next_star
def init():return star
ani = FuncAnimation(fig=fig, func=animate, frames=None, init_func =init, interval=1000, blit=False)
ax.set_xlabel('x轴')
ax.set_ylabel('y轴')
ax.set_zlabel('z轴')
ax.set_title('3D散点图', fontproperties='simhei', fontsize=14)
plt.tight_layout()
plt.show()
7.3 使用basemap绘制统计地图
7.3.1 basemap概述
统计地图是以地图为底本,用各种几何图形、实物形象或不同线纹、颜色等表明指标的大小及其分布状况的图形,它是统计图形与地图的结合,既可以突出说明某些现象在地域上的分布,也可以对某些现象进行不同地区间的比较,还可以表明现象所处的地理位置及与其他自然条件的关系等。
basemap是matplotlib中用于绘制地图背景的工具包,它一般情况下不会参与绘图操作,而是将给定的地理坐标转换到地图投影上,之后将数据交给matplotlib进行绘图。
按照basemap
pip install basemap
到入basemap
from mpl_toolkits.basemap import Basemap
basemap工具包中提供了一个重要的类Basemap, 表示基础地图背景,创建Basemap类的对象时可以指定地图投影的类型和要处理的地球区域等一些内容。
Basemap(llcrnrlon=None, llcrnrlat=None, urcrnrlon=None, urcrnrlat=None, llcrnrx=None, …, ax=None)
lon_0,lat_0:表示所需地图投影区域中心的经度或纬度。
llcrnrlon,llcrnrlat:表示地图投影区域左下角的经度或纬度。
urcrnrlon,urcrnrlat:表示地图投影区域右上角的经度或纬度。
width,height:表示所需地图投影区域的宽度和高度。
rsphere:表示投影中使用的球体的半径,默认值为6370997米。
resolution:表示包括海岸线、湖泊等的分辨率,可以取值为’c’(粗略,默认值)、’l’(低)、’i’(中级)、’h’(高)、’f’(完整)或None。
area_thresh:表示不会绘制海岸线或湖泊的阈值。
anchor:表示地图置于绘图区域的方式,默认为C,表示地图居中。
projection:表示地图投影的类型,默认值为cyl(等距圆柱投影)。
projection参数的常用取值及说明如下所示。
确定地图背景的投影区域之后,我们还需要对待处理的区域进行完善,比如在该区域中绘制河岸线、河流和地区或国家边界等。Basemap类中提供了一些绘制地图背景的方法。
拥有地图背景之后便可以使用matplotlib在地图上根据数据绘制图形。为方便用户操作,Basemap类中提供了一些在地图上绘制数据的方法(这些方法其实简单地转发到Axes实例方法,且进行了一些额外的处理和参数检查) 。
7.3.2 实例3:美国部分城镇人口分布
本实例要求根据下表的数据(存储于2014_us_cities.csv文件中),获取前500条数据,将获取的lat和lon两列的地理坐标转换到地图投影中,将pop列的数据绘制成气泡并显示到地图上。
# 03_twinkling_stars_in_3d
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import os
os.chdir(os.path.dirname(os.path.abspath(__file__)))
print(os.getcwd())
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 创建 Basemap 对象
map = Basemap(projection='stere', lat_0=90, lon_0=-105, llcrnrlat=23.41, urcrnrlat=45.44, llcrnrlon=-118.67, urcrnrlon=-64.52, rsphere=6371200., resolution='l', area_thresh=10000)
map.drawmapboundary() # 绘制地图投影周围边界
map.drawstates() # 绘制州界
map.drawcoastlines() # 绘制海岸线
map.drawcountries() # 绘制国家边界
# 绘制纬线
parallels = np.arange(0., 90, 10.)
map.drawparallels(parallels, labels=[1, 0, 0, 0], fontsize=10)
# 绘制经线
meridians = np.arange(-110., -60., 10.)
map.drawmeridians(meridians, labels=[0, 0, 0, 1], fontsize=10)posi = pd.read_csv("./素材/2014_us_cities.csv")
# 从3228组城市数据中选择500 组数据
lat = np.array(posi["lat"][0:500]) # 获取纬度值
lon = np.array(posi["lon"][0:500]) # 获取经度值
pop = np.array(posi["pop"][0:500], dtype=float) # 获取人口数
# 气泡图的气泡大小
size = (pop / np.max(pop)) * 1000
x, y = map(lon, lat)
map.scatter(x, y, s=size)
plt.title('2014年美国部分城镇的人口分布情况')
plt.show()
输出如下:
相关文章:
Python数据可视化-第7章-绘制3D图表和统计地图
环境 开发工具 VSCode库的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本书为《Python数据可视化》一书的配套内容,本章为第7章 绘制3D图表和统计地图 本章首先介绍了使用mplot3d工具包绘制3D图表,然后介绍了使用animation模块制作动画&#…...
操作系统 4.2-键盘
键盘中断初始化和处理 提取的代码如下: // con_init 函数,初始化控制台(包括键盘)的中断 void con_init(void) {set_trap_gate(0x21, &keyboard_interrupt); } // 键盘中断处理函数 .globl _keyboard_interrupt _keyboard…...
24.0.2 双系统ubuntu 安装显卡驱动黑屏,系统启动界面键盘失灵
问题描述:通过run文件在ubuntu 界面版安装nvidia 驱动后,忽然黑屏,再次启动时,键盘鼠标失灵无法选择系统,只能进入ubuntu界面。第二个问题是ubuntu 也无法用户登录,左上角光标闪烁。 查询方案,…...
探索多领域免费API资源库:打造数据查询利器
在当今信息爆炸的时代,获取各种领域的数据已成为许多人的需求。而免费API资源库的出现为我们提供了便捷的途径,让我们可以轻松地获取所需数据。本文将介绍涵盖20领域的免费API资源库,通过代码示例展示其功能,帮助读者更好地理解和…...
jenkins项目发布-安装k8s(rancher)客户端kubectl
找一台Linux 上安装 kubectl 以下是通过国内镜像源快速安装 kubectl 的方法,适合国内网络环境。 1. 下载 kubectl 通过国内镜像源下载指定版本的 kubectl: 使用阿里云镜像源下载: curl -LO "https://dl.k8s.io/release/$(curl -L -…...
【2025年认证杯数学中国数学建模网络挑战赛】C题 数据预处理与问题一二求解
目录 2025认证杯网络挑战赛A题 数据预处理与问题一求解三、数据预处理及分析3.1 数据可视化3.2 滑动窗口相关系数统计与动态置信区间耦合分析模型3.3 耦合关系分析结果 四、问题一代码数据预处理问题一 2025认证杯网络挑战赛 A题 数据预处理与问题一求解 三、数据预处理及分析…...
天玑AI开发套件2.0模型库数量激增3.3倍,让AI开发选择更自由
AI终端能力的升级,从不止步于硬件性能的提升,更有赖于软硬一体的系统化能力建设。在MDDC 2025大会上,联发科整合发布AI游戏两大核心场景下的开发平台:Neuron Studio打通模型开发全流程;Dimensity Profiler从多个维度提…...
edge 更新到135后,Clash 打开后,正常网页也会自动跳转
发现了一个有意思的问题:edge 更新135后,以前正常使用的clash出现了打开deepseek也会自动跳转: Search Resultshttps://zurefy.com/zu1.php#gsc.tab0&gsc.qdeepseek ,也就是不需要梯子的网站打不开了,需要的一直正…...
Socket多路复用网络编程应用总结
Socket多路复用网络编程应用总结 概述 • 传统I/O模型的局限性:传统阻塞式I/O模型每次仅在一个文件描述符(File Descriptor, FD)上执行I/O操作,导致程序需等待单个操作完成,无法高效处理多连接场景(如高并…...
APT攻击阶段划分,每个阶段分区方法
根据现有资料,APT(高级持续性威胁)攻击的阶段划分主要基于两种主流模型:洛克希德-马丁的杀伤链模型和生命周期模型。以下是分阶段详解及分区依据: 一、洛克希德-马丁杀伤链模型(7阶段) 核心逻辑…...
图像颜色空间对比(Opencv)
1. 颜色转换 import cv2 import matplotlib.pyplot as plotimg cv2.imread("tmp.jpg") img_r cv2.cvtColor(img, cv2.COLOR_BGR2RGB) img_g cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_h cv2.cvtColor(img, cv2.COLOR_BGR2HSV) img_l cv2.cvtColor(img, cv2.C…...
【NLP 58、利用trl框架训练LLM】
孤独总比忍受傻逼好得多 —— 25.4.11 源代码网页: 项目文件预览 - trl:Train transformer language models with reinforcement learning. - GitCode TRL —— 变压器强化学习 trl:一个用于后训练基础模型的全面库 1.概述 TRL 是一个利用监督微调&a…...
数据仓库元数据的管理
元数据(Meta Date),主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态 及ETL的任务运行状态。一般会通过元数据资料库(Metadata Repository)来统一地存储和管理元数据,其主要 目的…...
MySQL逻辑架构有什么?
1. MySQL逻辑架构分层 MySQL的逻辑架构可分为三层(自上而下): 连接层(Client Layer)服务层(Server Layer)存储引擎层(Storage Engine Layer) -----------------------…...
蓝桥杯 web 常用到的一些知识点
reduce 方法遍历数组、将数组元素累计 ①reduce接收两个参数,一个回调函数,一个初始值 ②回调函数传递了两个参数,一个是累加值,另一个是当前值 reduce的写法: arrays.reduce((a,cÿ…...
构建高可靠C++服务框架:从日志系统到任务调度器的完整实现
构建高可靠C服务框架:从日志系统到任务调度器的完整实现 一、深度解析示例代码技术体系 1.1 日志系统的进阶应用 示例代码中的ZRY_LOG_XXX宏展示了基础日志功能,但在生产环境中我们需要更完善的日志系统: 推荐技术栈组合: sp…...
<C#>在 C# .NET 中,使用 LoggerExtensions方法创建日志
在 C# .NET 中,LoggerExtensions 是 Microsoft.Extensions.Logging 命名空间下的一组扩展方法,它们为 ILogger 接口提供了便捷的日志记录方式。借助这些扩展方法,你能轻松记录不同级别的日志,如调试信息、信息、警告、错误等。下面…...
微服务与Spring Cloud Alibaba简介
微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。本单元主要介绍微服务架构的定义、微服务的特征、微服务架构面临的挑战、Spring Cloud 定义、Spring Cloud 核心组件、Spring C…...
元生代品牌建设:平台实现工作流(comfyui)创建与技术文档说明
本文摘要:蓝耘科技自2004年成立以来,从传统IT系统集成业务转型为聚焦GPU算力云服务的科技公司。其发布的元生代平台,是一个集算力调度、应用市场和AI协作开发为一体的智算云平台。用户可在蓝耘平台使用ComfyUI进行AI绘图,通过添加…...
无线通信网
1.2.4G相邻信道间有干扰,5G相邻信道几乎无干扰 2.2.4G频段的优点是信号强,衰减小,穿墙强,覆盖距离远;缺点是带宽较窄,速度较慢,干扰较大。 5G频段的优点是带宽较宽,速度较快&#…...
WMware虚拟机Ubuntu磁盘扩容
VMware中操作: 选择要扩容的虚拟机,点击编辑虚拟机设置 打开后点击磁盘——>点击扩展(注意:如果想要扩容的话需要删除快照) 调整到你想要的容量 点击上图的扩展——>确定 然后我们进到虚拟机里面 首先&#…...
vscode头文件自由跳转
文章目录 1. 安装c/c扩展2. 建.vscode文件夹 当你想要ctl鼠标左击跳转到三方库的定义的时候请往下看。 1. 安装c/c扩展 2. 建.vscode文件夹 在.vscode文件夹下新建c_cpp_properties.json {"configurations": [{"name": "Linux","include…...
BUG:Cannot find implementation for xxx. database. xxx. xxx_Impl does not exist
问题背景 使用Jetpack Compose将数据存储在room本地数据库时,编译报错: java. lang. RuntimeException: Cannot find implementation for com. example. androidproject. practice. roomdmeo. database. AppDatabase. AppDatabase_Impl does not exist …...
基于PySide6与pyCATIA的工程图智能文本替换工具开发指南
一、需求背景与实现价值 在汽车、航空等制造领域,CATIA工程图的文本标注管理常面临批量修改需求。传统手工操作存在效率低、易出错等问题。本文实现的文本替换工具具有以下行业价值: 提升图纸修订效率(单次操作可处理数千个文本对象&#x…...
MCP协议下人工智能康复理疗智械融合编程方向分析
一、引言:AI 康复时代的技术革新 在全球人口老龄化进程加速以及慢性病发病率持续走高的双重背景下,康复医疗领域正面临着前所未有的需求增长压力。据世界卫生组织(WHO)相关数据表明,预计到 2050 年,全球 60 岁及以上老年人口数量将激增至 21 亿,这一庞大群体中,绝大多…...
【嵌入式硬件】LAN9253说明书(中文版)
目录 1.介绍 1.1总体介绍 1.2模式介绍 1.2.1微控制器模式: 1.2.2 扩展模式 1.2.3 数字IO模式 1.2.4 各模式图 2.引脚说明 2.1 引脚总览 2.2 引脚描述 2.2.1 LAN端口A引脚 2.2.2 LAN端口B引脚 2.2.3 LAN端口A和、B电源和公共引脚 2.2.4 SPI/SQI PINS 2.2.5 分布式时…...
Java学习手册:Java基本语法与数据类型
Java语言以其简洁明了的语法和强大的数据类型系统而闻名。掌握Java的基本语法和数据类型是成为一名合格Java开发者的第一步。本文将深入探讨Java的基本语法结构和数据类型,帮助读者打下坚实的基础。 Java的基本语法 Java语言的语法设计简洁而强大,强调…...
操作系统 3.4-段页结合的实际内存管理
段与页结合的初步思路 虚拟内存的引入: 为了结合段和页的优势,操作系统引入了虚拟内存的概念。虚拟内存是一段地址空间,它映射到物理内存上,但对用户程序是透明的。 段到虚拟内存的映射: 用户程序中的段首先映射到虚…...
金融简单介绍及金融诈骗防范
在当今社会,金融学如同一股无形却强大的力量,深刻影响着我们生活的方方面面。无论是个人的日常收支、投资理财,还是国家的宏观经济调控,都与金融学紧密相连。 一、金融学的概念 金融学,简单来说,是研…...
基于docker搭建redis集群环境
在redis目录下创建redis-cluster目录,创建docker-compose.yml文化和generate.sh文件 【配置generate.sh文件】 for port in $(seq 1 9); \ do \ mkdir -p redis${port}/ touch redis${port}/redis.conf cat << EOF > redis${port}/redis.conf port 6379 …...
CSS 中常见的布局相关属性及其功能分类
一、块级布局(Block Layout) 1. display 作用:定义元素的显示方式。常用值: block:块级元素,默认独占一行。inline:行内元素,与其他内容在同一行显示。inline-block:兼…...
用css画一条弧线
ui里有一条弧线,现在用css实现 关键代码 border-bottom-left-radius: 100% 7px 两个参数分别代表横向和纵向的深度border-bottom-right-radius: 100% 7px...
CesiumForUnreal 本地矢量文件的加载,支持 shp/geojson 等常用格式
实现效果 Cesium for Unreal 集成 GDAL、LibPng 实现加载本地矢量文件 实现步骤 添加依赖在 cesium-unreal 中 extern -> cesium-native -> CMakeLists.txt 中的 57 行添加依赖库,代码如下: set(PACKAGES_PRIVATEabseil draco ktx modp-base64 meshoptimizer openssl …...
面向基于发布-订阅的物联网网络的匿名 MQTT 分析
中文标题: 面向基于发布-订阅的物联网网络的匿名 MQTT 分析 英文标题: An Analysis of Anonymous MQTT for Publish-Subscribe-Based IoT Networks 作者信息 Yudai Fukushima:东京都立大学电气工程与计算机科学系硕士生,研究方向…...
<C#> 详细介绍.NET 依赖注入
在 .NET 开发中,依赖注入(Dependency Injection,简称 DI)是一种设计模式,它可以增强代码的可测试性、可维护性和可扩展性。以下是对 .NET 依赖注入的详细介绍: 1. 什么是依赖注入 在软件开发里࿰…...
批量给文件编排序号,支持数字序号及时间日期序号编排文件
当我们需要对文件进行编号的时候,我们可以通过这个工具来帮我们完成,它可以支持从 001 到 100 甚至更多的数字序号编号。也可以支持按照日期、时间等方式对文件进行编号操作。这是一种操作简单,处理起来也非常的高效文件编排序号的方法。 工作…...
乳腺癌识别:双模型融合
本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 import matplotlib.pyplot as plt import tensorflow as tf import warnings as w w.filterwarnings(ignore) # 支持中文 plt.rcParams[font.sans-serif] [SimHei] # 用来正常显示中文标签 …...
ubuntu 22.04配置cuda和cudnn
cuda:12.1 wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda_12.1.1_530.30.02_linux.run sudo sh cuda_12.1.1_530.30.02_linux.runAbort/Continue选择Continue,不要勾选自带的driver 配置环境变量。~/.bashrc e…...
为什么Java不支持多继承?如何实现多继承?
一、前言 Java不支持多继承(一个类继承多个父类)主要出于文中设计考虑;核心目的是简化语言复杂性并避免潜在的歧义性问题。 二、直接原因:菱形继承/钻石继承问题(Diamond Problem) 假设存在如下继承关系&…...
ESP32S3 链接到 WiFi
以下是关于如何让 ESP32S3 连接到 WiFi 的完整流程和代码示例: ESP32S3 链接到 WiFi 1. 设置工作模式 ESP32 可以工作在两种模式下: Station (STA) 模式:作为无线终端连接到无线接入点(AP),类似于手机或…...
AndroidTV D贝桌面-v3.2.5-[支持文件传输]
AndroidTV D贝桌面 链接:https://pan.xunlei.com/s/VONXSBtgn8S_BsZxzjH_mHlAA1?pwdzet2# AndroidTV D贝桌面-v3.2.5[支持文件传输] 第一次使用的话,壁纸默认去掉的,不需要按遥控器上键,自己更换壁纸即可...
在spark中,窄依赖算子map和filter会组合为一个stage,这种情况下,map和filter是在一个task内进行的吗?
在 Spark 中,当 map 和 filter 这类窄依赖(Narrow Dependency)的算子连续应用时,它们会被合并到同一个 Stage 中,并且在同一个 Task 内按顺序执行。这种优化称为 流水线(Pipeline)执行ÿ…...
展讯android15源码编译之apk单编
首先找到你要单编的apk生成的路径: sys\out_system\target\product\ussi_arm64\system_ext\app\HelloDemo\HelloDemo.apk接着打开下面这个文件: sys\out_system\ussi_arm64_full-userdebug-gms.system.build.log在里面找关键字"Running command&q…...
EtherCAT 转 ModbusTCP 网关
一、功能概述 1.1 设备简介 本产品是 EtherCAT 和 Modbus TCP 网关,使用数据映射方式工作。 本产品在 EtherCAT 侧作为 EtherCAT 从站,接 TwinCAT 、 CodeSYS 、 PLC 等;在 ModbusTCP 侧做为 ModbusTCP 主站( C…...
SpringBoot集成阿里云文档格式转换实现pdf转换word,excel
一、前置条件 1.1 创建accessKey 如何申请:https://help.aliyun.com/zh/ram/user-guide/create-an-accesskey-pair 1.2 开通服务 官方地址:https://docmind.console.aliyun.com/doc-overview 未开通服务时需要点击开通按钮,然后才能调用…...
大数据-271 Spark MLib - 基础介绍 机器学习算法 线性回归 场景 定义 损失 优化
点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! MyBatis 更新完毕目前开始更新 Spring,一起深入浅出! 目前已经更新到了: H…...
ubuntu不生成core文件的处理
1、设置unlimited ulimit -a 查看是否设置,没有设置的使用下面命令设置 ulimit -c unlimited这个设置只在当前会话有效,添加到 ~/.bashrc 中,重开终端生效 2、sysctl配置 修改 /etc/sysctl.conf 文件 ,增加以下两个配置&#…...
游戏服务器DDoS攻防实战指南——从攻击溯源到智能防护体系构建
本文深度解析游戏行业DDoS攻防技术演进路线,基于等保2.0与NIST框架,从攻击流量识别、弹性防护架构、智能调度算法三大维度,揭示游戏服务器防护体系的23个关键控制点。通过近期《永劫无间》服务器瘫痪事件复盘,结合Gartner最新混合…...
JAVA 导出 word
1、模板方式导出 1.1、引入 maven 依赖 <dependency><groupId>com.deepoove</groupId><artifactId>poi-tl</artifactId><version>1.12.2</version> </dependency>1.2、导出文档代码 public static void main(String[] args…...
OpenHarmony 5.0版本视频硬件编解码适配
一、简介 Codec HDI(Hardware Device Interface)对上层媒体服务提供视频编解码的驱动能力接口,主要功能有获取组件编解码能力,创建、销毁编解码器对象,启停编解码器操作,编解码处理等。 Codec HDI 2.0接口…...