R语言课程论文-飞机失事数据可视化分析

数据来源:Airplane Crashes Since 1908 (kaggle.com)

代码参考:Exploring historic Air Plane crash data | Kaggle

数据指标及其含义

指标名

含义

Date

事故发生日期(年-月-日)

Time

当地时间,24小时制,格式为hh:mm

Location

事故发生的地点

Operator

航空公司或飞机的运营商

Flight

由飞机操作员指定的航班号

Route

事故前飞行的全部或部分航线

Type

飞机类型

Registration

国际民航组织对飞机的登记

cn/In

结构号或序列号/线号或机身号

Aboard

机上人数

Fatalities

死亡人数

Ground

地面死亡人数

Summary

事故的简要描述和原

library(tidyverse)
library(lubridate)
library(plotly)
library(gridExtra)
library(usmap)
library(igraph)
library(tidytext)
library(tm)
library(SnowballC)
library(wordcloud)
library(RColorBrewer)
library(readxl)

df<- read.csv('F:\\Airplane_Crashes_and_Fatalities_Since_1908.csv',stringsAsFactors = FALSE)
df <- as_tibble(df)
head(df)
dim(df)
colnames(df)
df[is.na(df)] <- 0
df$Date <- mdy(df$Date)
df$Time <- hm(df$Time)
df$Year <- year(df$Date)
df$Month <- as.factor(month(df$Date))
df$Day <- as.factor(day(df$Date))
df$Weekday <- as.factor(wday(df$Date))
df$Week_no <- as.factor(week(df$Date))
df$Quarter <- as.factor(quarter(df$Date))
df$Is_Leap_Year <- leap_year(df$Date)
df$Decade <- year(floor_date(df$Date, years(10)))
df$Hour <- as.integer(hour(df$Time))
df$Minute <- as.factor(minute(df$Time))
df$AM_PM <- if_else(am(df$Time), 'AM', 'PM')
df$btwn_6PM_6AM <- if_else(df$Hour <= 6 | df$Hour >= 18, '6PM-6AM', '6AM-6PM')
year_wise <- df %>% count(Year)
day_wise <- df %>% count(Day) 
week_day_wise <- df %>% count(Weekday)
month_wise <- df %>% count(Month)
week_no_wise <- df %>% count(Week_no)
q_wise <- df %>% count(Quarter)
hour_wise <- df %>% count(Hour)
am_pm_wise <- df %>% count(AM_PM)
btwn_6PM_6AM_wise <- df %>% count(btwn_6PM_6AM)
Fatalities_wise <- df %>% count(Fatalities)
#图1:自1980年来每年失事飞机失事次数柱状图
ggplot(year_wise, aes(x = Year, y = n)) +
  geom_col(fill = '#0f4c75', col = 'white') +
  labs(title = '自1908年以来每年发生的飞机失事次数', x = '', y = '') +
  scale_x_continuous(breaks = seq(1908, 2020, 4))

#图2:失事飞机失事次数柱状图(按一周第几天、一月第几天统计)
wd <- ggplot(week_day_wise, aes(x = Weekday, y = n)) +
  geom_col(fill = '#3b6978', col = 'white')+
  labs(title = '按周的每一天统计飞机失事次', x = '', y = '')
d <- ggplot(day_wise, aes(x = Day, y = n)) +
  geom_col(fill = '#b83b5e', col = 'white')+
  labs(title = '按月的每一天统计飞机失事次', x = '', y = '')
grid.arrange(wd, d, nrow = 1, widths = c(1, 3))

#图3:失事飞机失事次数柱状图(按一年第几月、第几周、第几季度统计)
m <- ggplot(month_wise, aes(x = Month, y = n)) +
  geom_col(fill = '#ffcb74', col = 'white') +
  labs(title = '按月统计', x = '', y = '')
wn <- ggplot(week_no_wise, aes(x = Week_no, y = n)) +
  geom_col(fill = '#4f8a8b', col = 'white') +
  labs(title = '按周统计', x = '', y = '') 
q <- ggplot(q_wise, aes(x = Quarter, y = n)) +
  geom_col(fill = '#ea907a', col = 'white') +
  labs(title = '按季度统计', x = '', y = '')
grid.arrange(m, wn, q, nrow = 1, widths = c(2, 5, 1))

#图4:失事飞机失事次数柱状图(按一天第几小时、一天中上下午度统计)
h <- ggplot(hour_wise, aes(x = Hour, y = n)) +
  geom_col(fill = '#BD956A') +
  labs(title = '按小时统计', x = '', y = '')
a <- ggplot(am_pm_wise, aes(x = AM_PM, y = n, fill = AM_PM)) +
  geom_col() + 
  labs(title = '上午-下午', x = '', y = '') +
  scale_fill_brewer(palette = "Set1") +
  theme(legend.position = "none") 
n <- ggplot(btwn_6PM_6AM_wise, aes(x = btwn_6PM_6AM, y = n, fill = btwn_6PM_6AM)) +
  geom_col() +
  labs(title = '白天&夜间', x = '', y = '') +
  scale_fill_brewer(palette = "Dark2") + 
  theme(legend.position = "none") 
grid.arrange(h, a, n, nrow = 1, layout_matrix = rbind(c(1,1,1,1,2),c(1,1,1,1,3)))

#图5:失事飞机型号统计条形图
# 按类型分组
type_wise <- df %>%
  count(Type, sort = TRUE)
#按制造商提取和分组
main_type_wise <- df %>%
  #用空字符串替换型号
  mutate(main_type = str_replace_all(Type, "[A-Za-z]*-?\\d+-?[A-Za-z]*.*", "")) %>% 
  count(main_type, sort = TRUE) %>%
  # 跳过空字符串行
  filter(main_type > 'A') 
options(repr.plot.width = 12)
# 失事飞机的型号排名(前20)
ggplot(head(type_wise, 20), aes(reorder(Type, n) , n, fill = n)) +
  geom_col(fill = 'deepskyblue2') +  
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold") +
  labs(title = '失事飞机的型号统计', x = '', y = '') +
  coord_flip()

#图6:失事飞机制造商统计条形图
ggplot(head(main_type_wise, 10), aes(reorder(main_type, n), n, fill = n)) +
  geom_col(fill = 'deepskyblue2') +
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold") +
  labs(title = '失事飞机的制造商统计', x = '', y = '')+    
  coord_flip()

#图7:失事飞机(包括军事飞机)运营商统计条形图
#运营商统计
operator_wise <- df %>%
  count(Operator, sort = TRUE)
#商业运营商表
main_op_wise <- df %>%
  # replace all group of words followed by '-'
  mutate(main_op = str_replace_all(Operator, ' -.*', '')) %>% 
  filter(!str_detect(main_op, '[Mm]ilitary')) %>%
  filter(!str_detect(main_op, 'Private')) %>%
  count(main_op, sort = TRUE) %>%
  filter(main_op > 'A') 
# 提取军事飞行数据
force <- operator_wise %>%
  filter(str_detect(Operator, '[Mm]ilitary')) %>%
  mutate(op = str_replace_all(Operator, 'Military ?-? ?', '')) %>%
  count(op, sort = TRUE)
#提取军事飞机所属国家
force_country <- operator_wise %>%
  # 获取包含字符串“军用”的行'military'
  filter(str_detect(Operator, 'Military|military')) %>%
  # 将带有包含国家信息的字符串替换为国家名
  mutate(op = str_replace_all(Operator, 'Royal Air Force', 'UK')) %>%
  mutate(op = str_replace_all(op, 'Military ?-? ?|Royal', '')) %>%
  mutate(op = str_replace_all(op, ' (Navy|Army|Air|Maritime Self Defense|Marine Corps|Naval|Defence|Armed) ?.*', '')) %>%
  mutate(op = str_replace_all(op, '.*U\\.? ?S\\.?.*|United States|American', 'USA')) %>%
  mutate(op = str_replace_all(op, 'Aeroflot ?/? ?', '')) %>%
  mutate(op = str_replace_all(op, '.*Republic? ?of', '')) %>%
  mutate(op = str_replace_all(op, '.*British.*', 'UK')) %>%
  mutate(op = str_replace_all(op, '.*Indian.*', 'Indian')) %>%
  mutate(op = str_replace_all(op, '.*Chin.*', 'Chinese')) %>%
  mutate(op = str_replace_all(op, '.*Chilean.*', 'Chilian')) %>%
  mutate(op = str_replace_all(op, '.*Iran.*', 'Iran')) %>%
  mutate(op = str_replace_all(op, '.*French.*', 'French')) %>%
  mutate(op = str_replace_all(op, '.*Ecuador.*', 'Ecuadorean')) %>%
  mutate(op = str_replace_all(op, '.*Zambia.*', 'Zambian')) %>%
  mutate(op = str_replace_all(op, '.*Russia.*', 'Russian')) %>%
  mutate(op = str_replace_all(op, '.*Afghan.*', 'Afghan')) %>%
  group_by(op) %>%
  summarize(n = sum(n)) %>%
  arrange(desc(n)) 
#军用飞行与非军用飞行
yr_military <- df %>%
  select(Year, Operator) %>%
  mutate(Is_Military = str_detect(Operator, 'Military|military')) %>%
  group_by(Year, Is_Military) %>%
  summarize(n = n())
ggplot(head(operator_wise, 10), aes(reorder(Operator, n) , n, fill = n))+
  geom_col(fill = 'coral3')+
  labs(title='失事飞机(包括军事飞机在内)的运营商统计', x = '', y = '')+  
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold")+
  coord_flip()

#图8:失事飞机(不包括军事飞机)运营商统计条形图
ggplot(head(main_op_wise, 10), aes(reorder(main_op, n) , n, fill=n)) +
  geom_col(fill='coral2') +
  labs(title='失事商业飞机(不包括军事飞机)的商业运营商统计', x='', y='') +  
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold") +
  coord_flip()

#图9:军事飞机所属军队、所属国家统计条形图
f <- ggplot(head(force, 10), aes(reorder(op, n) , n, fill = n))+
  geom_col(fill = 'cyan4')+
  labs(title = '军事飞机失事统计', x = '', y = '')+  
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold")+
  coord_flip()
fc <- ggplot(head(force_country, 10), aes(reorder(op, n) , n, fill = n))+
  geom_col(fill = 'cyan3')+
  labs(title = '军事飞机失事的国家排名', x = '', y = '')+  
  geom_text(aes(label = n), hjust = 1.5, colour = "white", size = 5, fontface = "bold")+
  coord_flip()
grid.arrange(f,fc, nrow = 1, widths = c(1, 1))

#图10:自1980年来军事飞机与非军事失事次数柱状图
ggplot(yr_military, aes(x = Year, y = n, fill = Is_Military)) +
  geom_col(col = 'white') +
  labs(title = '失事飞机是否为军用飞机?',x = '', y = '', fill = '') +
  scale_x_continuous(breaks = seq(1908, 2020, 4)) + 
  scale_fill_brewer(palette = "Dark2") +
  theme(legend.position = "top", legend.justification = "left")

#图11:飞机失事地点统计条形图
take_off_dest <- df %>%
  select('Route') %>%
  filter(Route!='') %>%
  filter(str_detect(Route, ' ?- ?')) %>%
  mutate(Take_Off = str_extract(Route, '[^-]* ?-?')) %>%
  mutate(Take_Off = str_replace(Take_Off, ' -', ''))%>%
  mutate(Destination = str_extract(Route, '- ?[^-]*$')) %>%
  mutate(Destination = str_replace(Destination, '- ?', ''))
route <- take_off_dest %>% count(Route, sort = TRUE)
take_off <- take_off_dest %>% count(Take_Off, sort = TRUE)
dest <- take_off_dest %>% count(Destination, sort = TRUE)
r <- ggplot(head(route, 15), aes(reorder(Route, n) , n, fill=n))+
  geom_col(fill='#E59CC4')+
  labs(title='飞行途中失事路线', x='', y='')+  
  geom_text(aes(label=n), hjust = 1.5, colour="white", size=5, fontface="bold")+
  coord_flip()
t <- ggplot(head(take_off, 15), aes(reorder(Take_Off, n) , n, fill=n))+
  geom_col(fill='#005082')+
  labs(title='起飞时飞机失事地点', x='', y='')+  
  geom_text(aes(label=n), hjust = 1.5, colour="white", size=5, fontface="bold")+
  coord_flip()
d <- ggplot(head(dest, 15), aes(reorder(Destination, n) , n, fill=n))+
  geom_col(fill='#ff6363')+
  labs(title='落地时飞机失事地点', x='', y='')+  
  geom_text(aes(label=n), hjust = 1.5, colour="white", size=5, fontface="bold")+
  coord_flip()
options(repr.plot.width = 18)
grid.arrange(r,t,d, nrow = 1, widths=c(1,1,1))

#图12:全球范围内飞机失事热力图
cntry <- cntry %>%
  mutate(m = case_when(
    n >= 100  ~ "100 +",
    n < 100 & n >= 70 ~ "70 - 100",
    n < 70 & n >= 40 ~ "40 - 70",
    n < 40 & n >= 10 ~ "10 - 40",
    n < 10  ~ "< 10")) %>%
  mutate(m = factor(m, levels = c("< 10", "10 - 40", "40 - 70", "70 - 100", "100 +")))
world_map <- map_data("world")
map_data <- cntry %>% 
  full_join(world_map, by = c('Country' = 'region')) 
options(repr.plot.width = 18, repr.plot.height = 9)
map_pal = c("#7FC7AF", "#E4B363",'#EF6461',"#E97F02",'#313638')
ggplot(map_data, aes(x = long, y = lat, group = group, fill = m)) +
  geom_polygon(colour = "white") + 
  labs(title = '全球范围内飞机失事热力图', x = '', y = '', fill = '') +
  scale_fill_manual(values = map_pal, na.value = 'whitesmoke') + 
  theme(legend.position='right', legend.justification = "top") + 
  guides(fill = guide_legend(reverse = TRUE))

#图13:飞机失事原因词云图
data <- read_excel("F:\\summary.xlsx")
corpus <- Corpus(VectorSource(data))
corpus <- tm_map(corpus, content_transformer(tolower))
corpus <- tm_map(corpus, removePunctuation)
corpus <- tm_map(corpus, removeNumbers)
corpus <- tm_map(corpus, removeWords, stopwords("english"))

dtm <- TermDocumentMatrix(corpus)
word_freqs <- rowSums(as.matrix(dtm))
wordcloud(names(word_freqs), word_freqs, min.freq = 1, max.words=150,words_distance=0.001,random.order=FALSE,font_path='msyh.ttc',
rot.per=0.05,colors=brewer.pal(8, "Dark2"), backgroundColor = "grey",shape = 'circle',width=3, height=9)

ps:低价出课程论文-多元统计分析论文、R语言论文、stata计量经济学课程论文(论文+源代码+数据集)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/392718.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Android 11以上获取不到第三方app是否安装

开年第一篇&#xff0c;处理了一下年前的小问题。 问题&#xff1a;本地app跳转到第三方app地图进行导航&#xff0c;获取不到第三方地图是否安装。 解决&#xff1a; 1.添加包名 This can be done by adding a <queries> element in the Android manifest.在app下的…

红队打靶练习:IMF: 1

目录 信息收集 1、arp 2、nmap 3、nikto 目录探测 gobuster dirsearch WEB 信息收集 get flag1 get flag2 get flag3 SQL注入 漏洞探测 脱库 get flag4 文件上传 反弹shell 提权 get flag5 get flag6 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# a…

【力扣hot100】刷题笔记Day5

前言 回学校了&#xff0c;荒废了半天之后打算奋发图强猛猛刷题&#xff0c;找实习&#xff01;赚钱&#xff01;&#xff01; 560. 和为 K 的子数组 - 力扣&#xff08;LeetCode&#xff09; 前缀法 哈希表 这个题解解释比官方清晰&#xff0c;截个图方便看&#xff0c;另一…

慎投!2023年共124本SCI/SSCI被剔除汇总(附电子档下载目录)

2023年SCI/SSCI剔除期刊汇总 2023年3月20日&#xff0c;Web of Science核心期刊目录再次更新&#xff01;共有50本期刊被剔除出SCIE & SSCI期刊目录&#xff0c;其中大部分为Hindawi旗下期刊&#xff08;19本&#xff09;&#xff0c;引起不小的轰动&#xff01; 2023年全…

数据结构之时空复杂度

一、前言 1&#xff09;什么是数据结构 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一种或多种特定关系的数据元素的 集合。 2&#xff09;什么是算法 算法(Algorithm):就是定义良好的计算过程&#xff0c;他取一个或一组的值为输入&am…

计算机网络——14CDN

CDN 视频流化服务和CDN&#xff1a;上下文 视频流量&#xff1a;占据着互连网大部分的带宽 Netflix&#xff0c;YouTube&#xff1a;占据37%&#xff0c;16%的下行流量 挑战&#xff1a;规模性-如何服务~1B用户&#xff1f; 单个超级服务器无法提供服务&#xff08;为什么&am…

备战蓝桥杯---数学之博弈论基础1

目录 1.对称博弈 2.巴什博弈&#xff1a; 3.NIM博弈&#xff1a; 注意一个法则&#xff1a; 1.对称博弈 我们先看一个经典的例子&#xff1a; 下面是分析&#xff1a; 2.巴什博弈&#xff1a; 我们只要先手取1个&#xff0c;然后先手再去取5-刚刚后手的数字即可。 当石子数…

SHERlocked93 的 2021 年终总结

我还是和往年一样&#xff0c;总结发的又晚了一点&#xff0c;为什么又发这么晚呢&#xff0c;因为懒 年终总结 疫情之后时间时间过的太快了&#xff0c;不知道是不是只有我这样感觉。 四五月份去兰州玩了下&#xff08;其实是出差&#xff09;&#xff0c;终于看到了黄土高原&…

机器视觉与嵌入式技术:开拓自动驾驶和远程监控新视野

&#xff08;本文为简单介绍&#xff0c;观点源于网络&#xff09; 机器视觉系统是指利用计算机来模拟人眼的识别与判断。在自动驾驶和远程监控领域&#xff0c;机器视觉结合嵌入式技术的应用&#xff0c;不仅极大地提升了自动化水平&#xff0c;而且开辟了新的技术视野。 在…

迅为3A5000_7A2000开发板龙芯自主指令系统支持PCIE3.0、USB3.0、SATA3.0、HDMI、VGA等

性能强 采用全国产龙芯3A5000处理器&#xff0c;基于龙芯自主指令系统 (LoongArch)的LA464微结构&#xff0c;并进一步提升频率&#xff0c;降低功耗&#xff0c;优化性能。 桥片 采用龙芯 7A2000&#xff0c;支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路 VGA…

【ArcGIS微课1000例】0103:导出点、线、面要素的折点坐标值

点要素对应的是一个或者若干个坐标,线要素对应的是对个坐标值对应的点连起来,面要素是多个坐标值对应的点连起来构成的封闭多边形。本文讲述导出点的坐标值。 文章目录 一、点要素坐标导出1. 计算点坐标2. 导出点坐标二、线要素坐标导出1. 生成线要素折点2. 计算折点坐标3. 导…

一款服务于医院临床数据资源建设的平台,助力医疗信息化发展

随着医疗技术的不断发展&#xff0c;医院需要越来越多的临床数据来支持科研、教学和临床实践。然而&#xff0c;在传统的医疗系统中&#xff0c;数据分散、信息割裂、无法有效整合和共享。为了解决这一问题&#xff0c;临床数据资源整合平台应运而生。 临床数据资源整合平台是…

C++之内存对齐

目录 内存对齐 一、内存对齐解释 二、为什么要内存对齐&#xff1f; 三、内存对齐的三大规则 3.1、数据成员对齐规则 3.2、结构(或联合)的整体对齐规则 3.3、结构体作为成员 3.4、代码例子 内存对齐 一、内存对齐解释 对齐规则是按照成员的声明顺序&#xff0c;依次安排…

openGauss学习笔记-221 openGauss性能调优-确定性能调优范围-分析作业是否被阻塞

文章目录 openGauss学习笔记-221 openGauss性能调优-确定性能调优范围-分析作业是否被阻塞221.1 操作步骤 openGauss学习笔记-221 openGauss性能调优-确定性能调优范围-分析作业是否被阻塞 数据库系统运行时&#xff0c;在某些业务场景下查询语句会被阻塞&#xff0c;导致语句…

vue2+高德地图web端开发(二)

前言&#xff1a; 高德地图输入提示与 POI 搜索相关文档&#xff1a;输入提示与 POI 搜索-服务插件和工具-进阶教程-地图 JS API 2.0 | 高德地图API (amap.com) 输入提示-输入提示-示例中心-JS API 2.0 示例 | 高德地图API (amap.com) 创建输入框&#xff1a; 引入Element组…

java设计模式之解释器模式

解释器模式&#xff08;Interpreter Pattern&#xff09; 1.基本介绍 在编译原理中&#xff0c;一个算术表达式通过词法分析器形成词法单远&#xff0c;而这些词法单远再通过语法分析器构建语法分析树&#xff0c;最终形成一颗抽象的语法分析树&#xff0c;&#xff08;词法分…

Unity所有关于旋转的方法详解

前言&#xff1a;欧拉角和四元数的简单描述 我们在Inspector面板上看到的rotation其实是欧拉角&#xff0c; 我们将Inspector面板设置成Debug模式&#xff0c;此时看到的local Rotation才是四元数。 Unity中的欧拉旋转是按照Z-X-Y顺规执行的旋转&#xff0c;一组欧拉旋转过程中…

链表总结 -- 《数据结构》-- c/c++

链表的概念 链表是一种物理存储结构上非连续存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。 链表是一种通过指针串联在一起的线性结构&#xff0c;每一个节点由两部分组成&#xff0c;一个是数据域一个是指针域&#xff08;存放指向下一个节点的…

Windows 编译 yangfengzzz/fluid-engine-OpenVDB

我想将 OpenVDB 接入 doyubkim 的流体引擎 https://github.com/doyubkim/fluid-engine-dev 然后搜到已经有人做过这件事了 https://github.com/yangfengzzz/fluid-engine-OpenVDB Windows 编译 yangfengzzz/fluid-engine-OpenVDB 但是我是 windows&#xff0c;所以想要编译…

idea突然出现错误: “找不到或无法加载主类 @C:\Users\happ“解决方案

在公司敲代码时&#xff0c;编译器突然出现了以下报错&#xff0c;之前一直能正常运行 可以使用以下方法解决 找到启动类相关配置 找到Shorten command line,选择如下配置即可 进行到这里项目就能正常运行了&#xff0c;仅以此贴记录问题解决方案