【R语言】——VennDiagram包绘制维恩图(保姆级教程)

本期介绍利用VennDiagram包绘制绘制2-5元的维恩图

      维恩图(Venn diagram),也叫文氏图、温氏图、韦恩图、范氏图,用于显示元素集合重叠区域的关系型图表,通过图形与图形之间的层叠关系,来反应数据集之间的相交关系。

     当前R语言中的VennDiagram包可用于2元到5元的图维恩绘制,而大于5元的情况这需要借助R语言的另一个R包——UpsetR包(下期将做展示)。

1 数据准备

数据输入格式(xlsx格式):

 

2 R包加载及数据导入

#下载包#

install.packages("VennDiagram")

install.packages("openxlsx")

#加载包#

library (VennDiagram)  

library(openxlsx)

#数值导入,可对数值进行配对

set1<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet1",sep=',')

set2<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet2",sep=',')

set3<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet3",sep=',')

set4<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet4",sep=',')

set5<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet5",sep=',')

set6<-read.xlsx('C:/Rdata/jc/Venn.xlsx',sheet= "Sheet6",sep=',')

#数据转置,如果不转后头函数venn.diagram对矩阵数值不识别#

set1=t(set1)

set2=t(set2)

set3=t(set3)

set4=t(set4)

set5=t(set5)

set6=t(set6)

head(set)

#二元#

venn.diagram(x=list(set1,set2),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF'), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF'), # 填充色 配色https://www.58pic.com/

             category.names = c("Set1", "Set2") , #标签名

             cat.dist = 0.02, # 标签距离圆圈的远近

             cat.pos = -180, # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

             cat.cex = 2, #标签字体大小

             cat.fontface = "bold",  # 标签字体加粗

             cat.col='black' ,   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/两组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

             )

grid.draw(data)

图1 二元Venn 

#三元#

venn.diagram(x=list(set1,set2,set3),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC"), # 填充色 配色https://www.58pic.com/

             category.names = c("Set1", "Set2","Set3") , #标签名

             cat.dist = 0.02, # 标签距离圆圈的远近

             cat.pos = c(-120, -240, -180), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

             cat.cex = 2, #标签字体大小

             cat.fontface = "bold",  # 标签字体加粗

             cat.col='black' ,   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/三组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

图2 三元Venn

 

#四元#

venn.diagram(x=list(set1,set2,set3,set4),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"), # 填充色 配色https://www.58pic.com/

             category.names = c("Set1", "Set2","Set3","Set4") , #标签名

             cat.dist = c(0.2, 0.2, 0.1, 0.1), # 标签距离圆圈的远近

             cat.pos = c(-20, 20, -20, 20), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

             cat.cex = 2, #标签字体大小

             cat.fontface = "bold",  # 标签字体加粗

             cat.col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF"),   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/四组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

图4 四元Venn 

#五元#

venn.diagram(x=list(set1,set2,set3,set4,set5),

             scaled = F, # 根据比例显示大小

             alpha= 0.5, #透明度

             lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

             label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

             cex = 2, # 数字大小

             fontface = "bold",  # 字体粗细;加粗bold

             fill=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"), # 填充色 配色https://www.58pic.com/

             category.names = c("Set1", "Set2","Set3","Set4","Set5") , #标签名

             cat.dist = c(0.2, 0.2, 0.2, 0.2, 0.2), # 标签距离圆圈的远近

             cat.pos = c(0, -10, 240, 120, 20), # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

             cat.cex = 2, #标签字体大小

             cat.fontface = "bold",  # 标签字体加粗

             cat.col=c('#FFFFCC','#CCFFFF',"#FFCCCC","#CCCCFF", "#CCFFCC"),   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

             cat.default.pos = "outer",  # 标签位置, outer内;text 外

             output=TRUE,

             filename='C:/Rdata/jc/五组.png',# 文件保存

             imagetype="png",  # 类型(tiff png svg)

             resolution = 400,  # 分辨率

             compression = "lzw"# 压缩算法

)

grid.draw(data)

 

图4 五元Venn

#总结#

install.packages("VennDiagram")

install.packages("openxlsx")

library (VennDiagram)  

library(openxlsx)



#数值导入,可对数值进行配对

set1<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet1",sep=',')

set2<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet2",sep=',')

set3<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet3",sep=',')

set4<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet4",sep=',')

set5<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet5",sep=',')

set6<-read.xlsx('C:/Rdata/jc/Venn1.xlsx',sheet= "Sheet6",sep=',')

#数据转置,如果不转后头函数venn.diagram对矩阵数值不识别#

set1=t(set1)

set2=t(set2)

set3=t(set3)

set4=t(set4)

set5=t(set5)

set6=t(set6)

#全部代码注释#

venn.diagram(x=list(set1,set2,....),

                    scaled = F, # 根据比例显示大小

                    alpha= 0.5, #透明度

                    lwd=1,lty=1,col=c('#FFFFCC','#CCFFFF'), #圆圈线条粗细、形状、颜色;1 实线, 2 虚线, blank无线条

                    label.col ='black' , # 数字颜色abel.col=c('#FFFFCC','#CCFFFF',......)根据不同颜色显示数值颜色

                    cex = 2, # 数字大小

                    fontface = "bold",  # 字体粗细;加粗bold

                    fontfamily = "Times New Roma",  # 字体

                    fill=c('#FFFFCC','#CCFFFF'), # 填充色 配色https://www.58pic.com/

                    category.names = c("Set1", "Set2") , #标签名

                    cat.dist = 0.02, # 标签距离圆圈的远近

                    cat.pos = -180, # 标签相对于圆圈的角度cat.pos = c(-10, 10, 135)

                    cat.cex = 2, #标签字体大小

                    cat.fontface = "bold",  # 标签字体加粗

                    cat.col='black' ,   #cat.col=c('#FFFFCC','#CCFFFF',.....)根据相应颜色改变标签颜色

                    cat.default.pos = "outer",  # 标签位置, outer内;text 外

                    cat.fontfamily = "Times New Roma",  # 字体

                    xrotation = 2,  # 1 2 3 旋转确定大打头数据集

                    filename='C:/Rdata/jc/两组.png',# 文件保存

                    output=TRUE,

                    imagetype="png",  # 类型(tiff png svg)

                    resolution = 400,  # 分辨率

                    compression = "lzw",  # 压缩算法

                    ext.text = T # 增加指示线和标签

                    ext.percent = c(0.1,0.1,0.1), # 出现指示线和标签的条件

                    ext.dist = c(0.01,0.01),

                    ext.length = 0.8)

                    )

grid.draw(data)

好了本次分享就到这里。

关注公众号,发送“Venn”获得完整代码以及演示数据包

智能网联汽车的安全员高考试涉及多个方面的专业知识,括但不限于自动驾驶技术原理、车辆传感器融合、网络安全防护以及法律法规等内容。以下是针对该主题的一些核心知识点解析: ### 关于智能网联车安全员高考试的核心内容 #### 1. 自动驾驶分标准 国际自动机工程师学会(SAE International)定义了六个别的自动驾驶等,从L0到L5[^1]。其中,L3及以上别需要安全员具备更高的应急处理能力。 #### 2. 车辆感知系统的组成与功能 智能网联车通常配备多种传感器,如激光雷达、毫米波雷达、摄像头和超声波传感器等。这些设备协同工作以实现环境感知、障碍物检测等功能[^2]。 #### 3. 数据通信与网络安全 智能网联车依赖V2X(Vehicle-to-Everything)技术进行数据交换,在此过程中需防范潜在的网络攻击风险,例如中间人攻击或恶意软件入侵[^3]。 #### 4. 法律法规要求 不同国家和地区对于无人驾驶测试及运营有着严格的规定,考生应熟悉当地交通法典中有关自动化驾驶部分的具体条款[^4]。 ```python # 示例代码:模拟简单决策逻辑 def decide_action(sensor_data): if sensor_data['obstacle'] and not sensor_data['emergency']: return 'slow_down' elif sensor_data['pedestrian_crossing']: return 'stop_and_yield' else: return 'continue_driving' example_input = {'obstacle': True, 'emergency': False, 'pedestrian_crossing': False} action = decide_action(example_input) print(f"Action to take: {action}") ``` 需要注意的是,“橙点同学”作为特定平台上的学习资源名称,并不提供官方认证的标准答案集;建议通过正规渠道获取教材并参加培训课程来准备此类资格认证考试。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值