R语言绘制Venn图(文氏图、温氏图、维恩图、范氏图、韦恩图)
Venn图,又称文氏图,标题中其他名字也是它的别称,由封闭圆形组成,代表不同集合。圆形重叠部分表示集合交集,非重叠处为独有元素。在生物学、统计学等领域广泛应用,可展示不同数据集相似性与差异,辅助逻辑分析。以直观方式呈现复杂集合关系,是有力的可视化工具。
0x01 使用VennDiagram包
这里绘制venn图需要用到venn.diagram()
函数。
一、函数用法及参数说明
venn.diagram(x, filename, disable.logging = FALSE, height = 3000, width = 3000, resolution = 500, imagetype = "tiff", units = "px", compression = "lzw", na = "stop", main = NULL, sub = NULL, main.pos = c(0.5, 1.05), main.fontface = "plain", main.fontfamily = "serif", main.col = "black", main.cex = 1, main.just = c(0.5, 1), sub.pos = c(0.5, 1.05), sub.fontface = "plain", sub.fontfamily = "serif", sub.col = "black", sub.cex = 1, sub.just = c(0.5, 1), category.names = names(x), force.unique = TRUE, print.mode = "raw", sigdigs = 3, direct.area = FALSE, area.vector = 0, hyper.test = FALSE, total.population = NULL, lower.tail = TRUE,...)
- 1 基本输入参数
x
:一个列表,其中每个元素对应韦恩图中的一个集合,可以是向量(如整数、字符等)。
- 2 输出设置参数
- 2.1
filename
:图像输出的文件名,如果为NULL
,则返回一个绘图对象本身。 - 2.2
disable.logging
:布尔值,用于禁用日志文件输出并改为在控制台打印。 - 2.3
imagetype
:图像格式的指定,如 “tiff”、“png” 或 “svg” 等。
- 2.1
- 3 图形尺寸和分辨率参数
- 3.1
height
:整数,给出输出图形的高度,单位由units
参数指定。 - 3.2
width
:整数,给出输出图形的宽度,单位由units
参数指定。 - 3.3
resolution
:最终图形的分辨率,以 DPI 为单位。 - 3.4
units
:最终图形的尺寸单位,如 “px”。
- 3.1
- 4 压缩和缺失值处理参数
- 4.1
compression
:如果图像格式是 TIFF,此参数指定压缩算法,如 “lzw”。 - 4.2
na
:处理缺失值的方法,可选 “none”、“stop”、“remove”。
- 4.1
- 5 标题和副标题参数
- 5.1
main
:字符,给出韦恩图的主标题。 - 5.2
sub
:字符,给出韦恩图的副标题。 - 5.3
main.pos
:长度为 2 的向量,指示主标题的位置(x,y)。 - 5.4
main.fontface
:字符,给出主标题的字体样式(font style)。 - 5.5
main.fontfamily
:字符,给出主标题的字体类型(font type)。 - 5.6
main.col
:字符,给出主标题的颜色。 - 5.7
main.cex
:数字,给出主标题的字体大小(cex)。 - 5.8
main.just
:长度为 2 的向量,指示主标题的水平和垂直对齐方式。 - 5.9
sub.pos
:长度为 2 的向量,指示副标题的位置(x,y)。 - 5.10
sub.fontface
:字符,给出副标题的字体样式。 - 5.11
sub.fontfamily
:字符,给出副标题的字体类型。 - 5.12
sub.col
:字符,副标题的颜色。 - 5.13
sub.cex
:数字,给出副标题的字体大小。 - 5.14
sub.just
:长度为 2 的向量,指示副标题的水平和垂直对齐方式。
- 5.1
- 6 类别名称和数据处理参数
- 6.1
category.names
:允许使用绘图语法指定类别名称。 - 6.2
force.unique
:逻辑值,指定是否仅使用输入列表中每个元素的唯一元素,默认为FALSE
。 - 6.3
print.mode
:可以是 “raw” 或 “percent”,决定数字的打印格式,也可以是一个向量,用于指定多种打印模式。 - 6.4
sigdigs
:如果print.mode
中有元素是 “percent”,则此参数指定保留的有效数字位数。
- 6.1
- 7 面积和超几何检验参数
- 7.1
direct.area
:布尔值,如果为true
,则直接将area.vector
参数中的值分配给相应区域的面积,仅在清楚向量中每个位置对应哪个区域时使用。 - 7.2
area.vector
:当direct.area
为true
时使用,是对应区域的面积向量。 - 7.3
hyper.test
:如果韦恩图只有两个类别且total.population
不为NULL
,则执行超几何检验并添加到副标题中。 - 7.4
total.population
:当hyper.test
为true
时使用,是总群体大小。 - 7.5
lower.tail
:逻辑值,默认为TRUE
,如果为TRUE
,则概率为P[X <= x]
,否则为P[X > x]
。
- 7.1
- 8 图形调整参数
- 8.1
lwd
:1、2、3、4、5 的数字向量,给出每个圆的周长宽度。 - 8.2
lty
:1、2、3、4、5 的数字向量,给出每个圆的虚线样式。 - 8.3
col
:1、2、3、4、5 的字符向量,给出每个圆的周长颜色。 - 8.4
fill
:1、2、3、4、5 的字符向量,给出每个圆的区域颜色。 - 8.5
alpha
:1、2、3、4、5 的数字向量,给出每个圆的区域透明度。 - 8.6
label.col
:1、2、3、4、5 的字符向量,给出每个区域标签的颜色(长度基于集合数量)。 - 8.7
cex
:1、2、3、4、5 的数字向量,给出每个区域标签的大小(长度基于集合数量)。 - 8.8
fontface
:1、2、3、4、5 的字符向量,给出每个区域标签的字体样式(长度基于集合数量)。 - 8.9
fontfamily
:1、2、3、4、5 的字符向量,给出每个区域标签的字体类型(长度基于集合数量)。 - 8.10
cat.pos
:1、2、3、4、5 的数字向量,给出每个类别名称沿圆的位置(角度),0 在 12 点钟方向。 - 8.11
cat.dist
:1、2、3、4、5 的数字向量,给出每个类别名称距圆边缘的距离(以 npc 单位),可以为负数。 - 8.12
cat.cex
:1、2、3、4、5 的数字向量,给出每个类别名称的大小。 - 8.13
cat.col
:1、2、3、4、5 的字符向量,给出每个类别名称的颜色。 - 8.14
cat.fontface
:1、2、3、4、5 的字符向量,给出每个类别名称的字体样式。 - 8.15
cat.fontfamily
:1、2、3、4、5 的字符向量,给出每个类别名称的字体类型。 - 8.16
cat.just
:基于集合数量长度为 1/2/3/4 的数字向量列表,每个向量长度为 2,指示每个类别名称的水平和垂直对齐方式。 - 8.17
cat.default.pos
:1、2、3 的字符之一,为 “outer” 或 “text”,用于指定类别名称的默认位置(cat.pos 和 cat.dist 的处理方式不同)。 - 8.18
cat.prompts
:2 的数字,布尔值,指示是否显示类别名称定位的帮助文本。 - 8.19
margin
:1、2、3、4、5 的数字,给出图形周围的空白量(以网格单位)。 - 8.20
rotation.degree
:1、2、3、4、5 的数字,给出整个图形的旋转度数。 - 8.21
rotation.centre
:1、2、3、4、5 的长度为 2 的数字向量,指示旋转中心(x,y)。 - 8.22
rotation
:3 的数字,给出三集合韦恩图的顺时针旋转(1、2 或 3)。 - 8.23
reverse
:3 的逻辑值,沿三集合韦恩图的中央垂直轴对称反射。与rotation
结合使用以生成所有可能的集合顺序。 - 8.24
euler.d
:2、3 的逻辑值,为二集合和三集合韦恩图启用欧拉图(具有可移动圆圈的韦恩图)。 - 8.25
scaled
:2、3 的逻辑值,为二集合和某些三集合欧拉图启用缩放。(必须为true
才能启用此功能)。 - 8.26
sep.dist
:2、3 的数字,控制某些二集合或三集合欧拉图中不同圆圈之间的分离距离。 - 8.27
offset
:2、3 的数字,介于 0 和 1 之间,给出在包含类型的二集合欧拉图和某些类似的三集合欧拉图中较小圆圈的偏移量。 - 8.28
inverted
:2 的逻辑值,沿其二集合韦恩图的垂直轴翻转(与reverse
不同)。 - 8.29
ext.text
:2 的逻辑值,当区域较小时允许外部文本标签。 - 8.30
ext.percent
:2 的数字向量(长度为 3),指示部分区域必须小于的比例以触发外部文本放置。元素允许对第一区域、第二区域和交叉区域进行单独控制。 - 8.31
ext.pos
:2 的数字向量(长度为 1 或 2),给出沿圆的外部区域标签的位置(角度),0(默认)在 12 点钟方向。 - 8.32
ext.line.lwd
:2 的数字,连接到外部文本的线的宽度。 - 8.33
ext.line.lty
:2 的数字,连接外部区域标签到其锚点的线的虚线样式。 - 8.34
ext.dist
:2 的数字向量(长度为 1 或 2),指示外部线的长度(使用负值缩短线)。 - 8.35
ext.length
:2 的数字向量(长度为 1 或 2),指示从锚点到文本绘制的外部线的比例。
- 8.1
二、准备工作
# 安装 VennDiagram 包,如果已经安装过可以省略这一步
install.packages("VennDiagram")# 加载 VennDiagram 包以使用其函数
library(VennDiagram)
三、绘制并直接输出本地
#设置工作目录
setwd("d:/")# 创建一个包含两个集合的列表,集合 A 为 1 到 150 的整数,集合 B 为 121 到 170 的整数
l <- list(A = 1:150,B = 121:170)# 使用 venn.diagram 函数绘制两个集合的韦恩图,并将结果保存为名为 "VennDiagram-1.png" 的图片文件
venn.diagram(l,filename = "VennDiagram-1.png")
四、绘制简单的韦恩图(不保存)
# 创建一个包含四个集合的列表,集合 A 为 1 到 150 的整数,集合 B 为 121 到 170 的整数,集合 C 为 75 到 234 的整数,集合 D 为 23 到 190 的整数
ll <- list(A = 1:150,B = 121:170,c = 75:234,D = 23:190)# 使用 venn.diagram 函数绘制四个集合的韦恩图,filename 设置为 NULL 表示不保存为文件,而是将结果存储在一个对象中
venn2 <- venn.diagram(ll,filename = NULL)# 使用 grid.draw 函数在当前图形设备上绘制存储在 venn2 对象中的韦恩图
grid.draw(venn2)
五、调整和美化
# 创建一个包含四个集合的列表,集合 A 为 1 到 150 的整数,集合 B 为 121 到 170 的整数,集合 C 为 75 到 234 的整数,集合 D 为 23 到 190 的整数
lll <- list(A = 1:150,B = 121:170,c = 75:234,D = 23:190)# 定义填充颜色向量,分别对应四个集合的填充颜色
fill_colors <- c("cornflowerblue","green","yellow","darkorchid1")# 定义类别颜色向量,用于设置四个集合的类别名称颜色
cat_col <- c("darkblue","darkgreen","orange","darkorchid4")# 使用 venn.diagram 函数绘制四个集合的韦恩图,filename 设置为 NULL 表示不保存为文件,而是将结果存储在一个对象中
# 参数说明:
# lll:包含四个集合的列表,用于绘制韦恩图
# filename = NULL:不保存为文件,而是返回一个绘图对象
# col = "black":韦恩图的边框颜色为黑色
# fill = fill_colors:使用定义的填充颜色向量为四个集合的区域填充颜色
# alpha = 0.4:设置区域的透明度为 0.4
# cat.col = cat_col:使用定义的类别颜色向量设置四个集合的类别名称颜色
# cat.cex = 1.5:设置类别名称的字体大小为 1.5
# rotation.degree = 0:不进行旋转
# lwd = 3:设置边框宽度为 3
# lty = 4:设置边框的线型为 4
venn3 <- venn.diagram(lll,filename = NULL,col = "black",fill = fill_colors,alpha = 0.4,cat.col = cat_col,cat.cex = 1.5,rotation.degree = 0,lwd = 3,lty = 4)# 使用 grid.draw 函数在当前图形设备上绘制存储在 venn3 对象中的韦恩图
grid.draw(venn3)
0x02 使用venneuler包
一、错误解决
我在安装包时,出现了如下错误信息(如未遇到该情况可忽略该解决方式):
> library(venneuler)
载入需要的程序包:rJava
Error: package or namespace load failed for ‘rJava’:loadNamespace()里算'rJava'时.onLoad失败了,详细内容:调用: fun(libname, pkgname)错误: JAVA_HOME cannot be determined from the Registry
错误: 无法载入程序包‘rJava’
这个错误通常是由于无法正确找到 Java 安装路径导致的。
首先确保你的系统上安装了 Java。你可以在命令行中输入 java -version 来检查 Java 是否安装以及查看其版本信息。
如果出现如图的提示,则表示系统里面没有安装Java,则需要通过下载安装Java,错误即可得到解决。
Java官网地址:https://www.java.com/zh-CN/
二、函数用法及参数说明
venneuler(combinations, weights,...)
-
1
combinations
:可以是以下几种形式之一:- 字符向量:指定不相交的类组合,类名之间用 “&” 字符分隔,例如
c("A","B","A&B")
。 - 命名的数值向量:名称指定类组合,值指定权重,例如
c(A=1, B=2, "A&B"=0.5)
。 - 两列的字符矩阵:指定元素到集合的映射,第一列是元素,第二列是集合名称,此时
weights
参数被忽略。 - 逻辑矩阵或数值矩阵:矩阵的列代表集合,行中的非零值(对于逻辑矩阵)或真值(对于数值矩阵)表示共同出现,行的权重对于逻辑矩阵为 1,对于数值矩阵为行和。为了方便,也可以传递数据框,它将被强制转换为矩阵。
- 字符向量:指定不相交的类组合,类名之间用 “&” 字符分隔,例如
-
2
weights
:如果combinations
是字符向量,那么这个参数指定相关的权重。在其他情况下被忽略。 -
返回值
返回一个VennDiagram
类的对象,包含以下组件:- 1
centers
:圆的中心(列是 x 和 y 坐标)。 - 2
diameters
:圆的直径。 - 3
colors
:圆的颜色,取值在 0 到 1 之间。 - 4
labels
:圆的标签。 - 5
residuals
:残差(输入交集区域与拟合交集区域之间的百分比差异)。 - 6
stress
:解的应力值。 - 7
stress01
:基于随机数据的应力的 0.01 临界值。 - 8
stress05
:基于随机数据的应力的 0.05 临界值。
- 1
三、准备工作
# 安装 venneuler 包
install.packages("venneuler")# 加载 venneuler 包以使用其函数
library(venneuler)#加载rJava包以使用其函数
library(rJava)
四、绘制韦恩图
已知集合的具体元素分布情况通过矩阵形式明确地表示元素与集合的关系可以这样表达:
# 创建一个数据框并转换为矩阵
m <- as.matrix(data.frame(A = c(1.5,0.2,0.4,0,0),B = c(0,0.2,0,1,0),C = c(0,0,0.3,0,1)))# 使用 venneuler 函数根据矩阵 m 计算韦恩图或欧拉图,并将结果存储在 v 中
v <- venneuler(m)# 使用 plot 函数绘制由 venneuler 函数生成的韦恩图对象 v
plot(v)
而已知集合及其交集的权重情况,而不需要具体的元素分布信息可以这样表达:
# 创建一个韦恩图对象 vd,通过 venneuler 函数传入命名的数值向量
# 该向量指定了不同集合组合及其对应的权重
# 集合 A 的权重为 0.3,集合 B 的权重为 0.5,集合 C 的权重为 0.7
# 集合 A 和 B 的交集权重为 0.1,集合 B 和 C 的交集权重为 0.2,集合 A、B 和 C 的交集权重为 0.1
vd <- venneuler(c(A = 0.3, B = 0.5, C = 0.7, "A&B" = 0.1, "B&C" = 0.2, "A&B&C" = 0.1))# 使用 plot 函数绘制由 venneuler 函数生成的韦恩图对象 vd
plot(vd)
相关文章:

R语言绘制Venn图(文氏图、温氏图、维恩图、范氏图、韦恩图)
Venn图,又称文氏图,标题中其他名字也是它的别称,由封闭圆形组成,代表不同集合。圆形重叠部分表示集合交集,非重叠处为独有元素。在生物学、统计学等领域广泛应用,可展示不同数据集相似性与差异,…...

【Vue.js】vue2 项目在 Vscode 中使用 Ctrl + 鼠标左键跳转 @ 别名导入的 js 文件和 .vue 文件
js 文件跳转 需要安装插件 Vetur 然后需要我们在项目根目录下添加 jsconfig.json 配置,至于配置的作用,可以参考我的另外一篇博客: 【React 】react 创建项目配置 jsconfig.json 的作用 它主要用于配置 JavaScript 或 TypeScript 项目的根…...

NVM配置与Vue3+Vite项目快速搭建指南
本文目录 1、配置环境1.1 NVM1、nvm常用命令 1.2 Mac配置环境1、安装nvm 1.3 Window配置环境1、安装nvm 2、 项目搭建2.1 项目依赖2.2 安装依赖2.3 配置1、别名配置2、创建样式及图片文件夹3、路由 2.4 项目搭建效果2.5 项目结构 在当今快速发展的前端技术领域中,掌…...

面试“利器“——微学时光
大家好,我是程序员阿药。微学时光是一款专为计算机专业学生和IT行业求职者设计的面试刷题小程序,它汇集了丰富的计算机面试题和知识点,旨在帮助用户随时随地学习和复习,提高自身的技术能力和面试技巧。 主题 随时随地学习&#x…...

【Unity】【游戏开发】游戏引擎是如何模拟世界的
【核心感悟】 游戏引擎通过两个维度的合并来模拟这个时间。 一个维度叫物理模型。 一个维度叫视觉模型。 对于物理模型,我们需要用物理引擎给予行为。 对于视觉模型,我们需要用动画去给予行为。 物理模型是真实机制,视觉模型是艺术表现&…...

vscode配置conda虚拟环境【windows系统】
安装好anacondavscode里安装python插件 3.点击左侧插件 如图1,再2,再点击3小星星激活conda环境 最后下方栏就出现conda环境了。就可以用啦...

libgpiod在imx8平台交叉编译说明
如下记录是在 imx8上测试使用 参考博主的文章 iMX6ULL 库移植 | Libgpiod 库的交叉编译及使用指南(linux) 编译说明 1: build.sh代码如下所示,先执行 source build.sh,注意修改交叉编译工具链为自己本地的地址; 2:执行 ./autogen…...

无人机之自主飞行关键技术篇
无人机自主飞行指的是无人机利用先进的算法和传感器,实现自我导航、路径规划、环境感知和自动避障等能力。这种飞行模式大大提升了无人机的智能化水平和操作的自动化程度。 一、传感器技术 传感器是无人机实现自主飞行和数据采集的关键组件,主要包括&a…...

performance.timing
performance.timing 是 Web 性能 API 的一部分,用于获取页面加载过程中的各个时间戳。这些时间戳可以帮助开发者分析页面加载性能,找出潜在的瓶颈。performance.timing 返回一个 PerformanceTiming 对象,该对象包含了多个属性,每个…...

教你不用下载 maven,不用配置环境变量,在 idea 上创建 maven 项目
我的主页:2的n次方_ 1. Maven Maven是⼀个项⽬管理⼯具, 通过 pom.xml ⽂件的配置获取 jar 包,⽽不⽤⼿动去添加 jar 包,这样就大大的提高了开发效率 2. Maven 的核心功能 2.1. 项目构建 创建第一个 Maven 项目 Maven 提供了标准的…...

linux 设置tomcat开机启动
在Linux系统中,要配置Tomcat开机自启动,可以创建一个名为 tomcat.service 的 systemd 服务文件,并将其放置在 /etc/systemd/system/ 目录下。以下是一个基本的服务文件示例,假设Tomcat安装在 /usr/local/tomcat 路径下:…...

opencv出错以及解决技巧
opencv配置 一开始,include的路径是<opencv4/opencv2/…> 这样在using namespace cv的时候导致了报错, 所以在cmakelist中需要对cmake的版本进行升级。 set(CMAKE_CXX_FLAGS “-stdc14 -O0 -Wall”)-O0 表示在编译过程中不进行任何优化 对应的pac…...

Python爬虫进阶(实战篇一)
接,基础篇,链接:python爬虫入门(所有演示代码,均有逐行分析!)-CSDN博客 目录 1.爬取博客网站全部文章列表 ps:补充(正则表达式) 爬虫实现 爬虫代码: 2.爬…...

运维面试题(2)
ssh服务(重点)协议使用 端口 号:默认是 22, 可以是被修改的,如果需要修改,则需要修改 ssh 服务的配置文件:#/etc/ssh/ssh_config,可以通过这个配置文件来修改端口 端口号可以修改&am…...

Django CSRF Token缺失或不正确
在Django中,CSRF(跨站请求伪造)验证失败,提示“CSRF token missing or incorrect”的错误,通常是由以下几个原因造成的: 忘记在表单中添加 {% csrf_token %} 模板标签:这是最常见的原因之一。确…...

10.12Python数学基础-矩阵(下)
9.矩阵的转置 矩阵的转置(Transpose)是矩阵操作中的一种基本运算。它通过交换矩阵的行和列来生成一个新的矩阵。具体来说,如果 A 是一个 mn 的矩阵,那么它的转置矩阵 A^T 是一个 nm 的矩阵,其中 A^T 的第 i 行第 j 列…...

vue网络自学知识点汇总
初体验 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><!--1.引入vue.j…...

Springboot项目Activemq延迟自定义消息完整代码案例(亲测可用)
1、porm.xml增加依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-activemq</artifactId> </dependency> 2、application.properties增加配置 # 连接地址 spring.activemq.broker-url=fa…...

常见ElasticSearch 面试题解析(上)
前言 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。ElasticSearch…...

训练VLM(视觉语言模型)的经验
知乎:lym 链接:https://zhuanlan.zhihu.com/p/890327005 如果可以用prompt解决,尽量用prompt解决,因为训练(精调)的模型往往通用能力会下降,训练和长期部署成本都比较高,这个成本也包…...

犬儒乐队热歌《阶梯》主观
犬儒乐队一直以来是中国独立音乐界的一支重要力量。他们的音乐作品总是充满创意与实验,擅长将不同的音乐元素融合在一起,给人带来耳目一新的感受。最近,犬儒乐队发布了一首新歌《阶梯》,让我们一起来评价一下这首作品。 首先&…...

多模态大语言模型(MLLM)-Blip3/xGen-MM
论文链接:https://www.arxiv.org/abs/2408.08872 代码链接:https://github.com/salesforce/LAVIS/tree/xgen-mm 本次解读xGen-MM (BLIP-3): A Family of Open Large Multimodal Models 可以看作是 [1] Blip: Bootstrapping language-image pre-training…...

flutter TabBar自定义指示器(带文字的指示器、上弦弧形指示器、条形背景指示器、渐变色的指示器)
带文字的TabBar指示器 1.绘制自定义TabBar的绿色带白色文字的指示器 2.将底部灰色文字与TabrBar层叠,并调整高度位置与胶囊指示器重叠 自定义的带文字的TabBar指示器 import package:atui/jade/utils/JadeColors.dart; import package:flutter/material.dart; im…...

【Fargo】9:模拟图片采集的内存泄漏std::bad_alloc
std::bad_alloc 崩溃。这样的内存分配会导致内存耗尽 is simulating an image of size 640x480 with 3 bytes per pixel, resulting in an allocation of approximately 921,600 bytes (or around 900 KB) for each image. The error you’re encountering (std::bad_alloc) ty…...

c# 前端无插件打印导出实现方式
打印 打印导出分布页 model List<界面的数据模型类> using WingSoft; using Newtonsoft.Json; <style type"text/css">.modal-content {width: 800px;}.modal-body {height: 400px;} </style> <script type"text/javascript">$(…...

数组的初始化,参数传递,和求和
在自己做的这个C语言解释器中,数组的使用非常简便。下面小程序是一个例子。演示了数组的初始化,参数传递, 和求和。 all[] { WA12,OR8,CA54, ID4, MT4, WY3, NV6, UT6, AZ11, CO10, NM5, ND3,SD3,NE4, KS6, OK7,TX40, MN10, WI10,IA6, MO10,…...

初始JavaEE篇——多线程(1):Thread类的介绍与使用
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:JavaEE 目录 创建线程 1、继承 Thread类 2、实现Runnable接口 3、使用匿名内部类 1)继承Thread类的匿名内部类 2)…...

基于单片机的LED照明自动控制系统的设计
本设计主控核心芯片选用了AT89C51单片机,接入了光照采集模块、红外感应模块、继电器控制模块,通过控制发光二极管模拟教室智能灯组的控制。首先通过光敏感应的方式感应当前光照环境为白天还是夜晚,同时,红外感应模块感应是否有人。…...

C语言——头文件的使用
目录 前言头文件怎么包含 前言 这个专栏会专门讲一些C语言的知识,后续会慢慢更新,欢迎关注 C语言专栏 头文件怎么包含 在使用头文件的过程中,我们经常会遇到重定义、重复包含等问题,那么怎么编写头文件和使用头文件才能解决这些…...

LeetCode 精选 75 回顾
目录 一、数组 / 字符串 1.交替合并字符串 (简单) 2.字符串的最大公因子 (简单) 3.拥有最多糖果的孩子(简单) 4.种花问题(简单) 5.反转字符串中的元音字母(简单&a…...