#数据处理
data1<-read_xlsx("使用数据(1).xlsx")
df1<- data1 %>% select(性别,对特种兵式旅行总体满意) %>%
group_by(性别,对特种兵式旅行总体满意) %>%
summarise(人数=n(), .groups = "drop")
# 定义顺序
likert_order <- c("非常不同意", "不同意", "中立", "同意", "非常同意")
# 转换为有序因子
df1$对特种兵式旅行总体满意 <- factor(
df1$对特种兵式旅行总体满意,
levels = likert_order,
ordered = TRUE)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- 数据来源:本人参加的第十四届市场调研大赛的团队调查问卷数据,主题是特种兵旅行。本例数据是483个个案对特种兵方式旅行总体方式满意这一量表问题的赞同程度,有非常不同意,不同意,中立,同意,非常同意五种程度。
2.2 图形1——双变量堆叠条形图
# 图双变量堆叠条形图
ggplot(df1,aes(x=对特种兵式旅行总体满意,y=人数,fill=性别))+
geom_col(width=0.8,color="gray30")+
geom_text(
aes(label = 人数),
position = position_stack(vjust = 0.5), # 标签居中
size = 3,
color = "black" # 黑色字体(如果背景色太深可改为white)
)+
scale_fill_brewer(palette="Blues")+ # 设置调色板
ggtitle("不同满意度下的性别分布")- 图形解读:体验过特种兵式旅行的人中,女生人数占比较高,这与大部分当代女生追求“出片”也许有很大关系;体验过特种兵式旅行的人中,对这种旅游方式满意的人数是313人,占总人数的64.8%,超过参与调查的人数的一半。
3 数据分布可视化
3.1 案例数据解释与展示
数据:2002至2022年间河北省,山西省,辽宁省,吉林省,黑龙江省,浙江省,安徽省,福建省,江西省,山东省,湖南省,广东省,四川省,贵州省,西藏自治区,陕西省16个省的农村居民人均工资性收入和人均经营净收入
数据来源:广东金融学院图书馆数据库
data2<-read_xlsx("使用数据(3).xlsx")
df <- data2 %>% select(人均工资性收入,人均经营净收入) %>%
gather(人均工资性收入,人均经营净收入,key=指标,value=指标值) # 融合数据
DT::datatable(df,rownames = FALSE)3.2 图形2——叠加直方图
ggplot(df)+aes(x=指标值,y=..density..,fill=指标)+
geom_histogram(position="identity",color="gray60",alpha=0.5)+
theme(legend.position=c(0.8,0.8),# 设置图例位置
legend.background=element_rect(fill="grey90",color="grey"))+
# 设置图例背景色和边框颜色
ggtitle("人均工资性收入&人均经营净收入的叠加直方图")- 图形解读:人均工资性收入和经营性收入总体都呈现右偏形态,但工资性收入的拖尾特征更明显,峰值都出现在0-5000之间。
4 变量关系可视化
4.1 案例数据解释与展示
数据是2000-2020年间,北京,广东省,西藏,陕西四个地区的人口出生率(‰)和人口死亡率(‰)。
数据来源:广东金融学院图书馆数据库
data3<-read_xlsx("使用数据(2).xlsx")
DT::datatable(data3,rownames = FALSE)4.2 图形3——分组散点图矩阵
ggpairs(data3, columns = 3:4,aes(color=地区,alpha=0.3))#df<-filter(data6_1,地区%in%c("北京","天津","上海"))- 图形解读:广东省和西藏自治区的出生率和死亡率相关系数较高,北京市出生率和死亡率相关系数低,没有显著相关关系。北京、广东和西藏的出生率分布形态近似,北京和西藏的死亡率分布形态近似。
5 样本相似性可视化
5.1 案例数据解释与展示
- 数据是用上个案例(图形3)的数据,本例利用这份数据做聚类分析
data4.2<-read_xlsx("使用数据(2).xlsx")
df1<- data4.2 %>%
select(人口出生率,人口死亡率) %>%
scale()
rownames(df1) <- make.unique(data4.2$地区) #地区可重复出现
DT::datatable(df1)5.2 图形4——K-means聚类图
#fviz_nbclust(df1, kmeans, method = "wss")#确定聚类数
set.seed(123) # 保证结果可重复
km_result <- kmeans(df1, centers = 3, nstart = 25)
fviz_cluster(km_result, data = df1,
palette = brewer.pal(3, "Set1"),
ellipse.type="convex",
star.plot = TRUE, # 显示中心点连线
repel = TRUE, # 避免标签重叠
labelsize=8,
ggtheme = theme_minimal(),
main = "各地区出生率死亡率聚类结果 (k=3)")df_result <- data4.2 %>%
mutate(Cluster = km_result$cluster)
# 查看聚类结果
print(df_result)# A tibble: 76 × 5
时期 地区 人口出生率 人口死亡率 Cluster
<chr> <chr> <dbl> <dbl> <int>
1 2020年 北京市 6.99 5.19 1
2 2019年 北京市 8.12 5.49 3
3 2018年 北京市 8.24 5.58 3
4 2017年 北京市 9.06 5.3 1
5 2016年 北京市 9.32 5.2 1
6 2015年 北京市 7.96 4.95 1
7 2014年 北京市 9.75 4.92 1
8 2012年 北京市 9.05 4.31 1
9 2011年 北京市 8.29 4.27 1
10 2010年 北京市 7.48 4.41 1
# ℹ 66 more rows
# 分析聚类特征
df_result %>%
group_by(Cluster) %>%
summarise(
avg_出生率 = mean(人口出生率),
avg_死亡率 = mean(人口死亡率),
包含地区 = paste(unique(地区), collapse = ", ")
)# A tibble: 3 × 4
Cluster avg_出生率 avg_死亡率 包含地区
<int> <dbl> <dbl> <chr>
1 1 9.72 4.71 北京市, 广东省
2 2 15.9 5.43 广东省, 西藏自治区
3 3 9.86 6.19 北京市, 陕西省
- 图形解读:数据明显聚成三类,第1类出生率死亡率都较低;第二类出生率高,死亡率较低;第三类出生率较低,死亡率较高。根据分类特征,北京大部分归到1类;广东省也归于1类;陕西归于3类;西藏归于2类。
6 时间序列可视化
6.1 案例数据解释与展示
- 本例数据使用图2的部分数据,截取了河北省、黑龙江省、广东省和西藏自治区的人均工资性收入和人均经营净收入
data5<-filter(data2,地区%in%c("河北省","黑龙江省","广东省","西藏自治区"))
df<-data5 |> gather(人均工资性收入:人均经营净收入,key=指标,value=指标值)
df$日期 <- as.numeric(gsub("年", "", df$日期)) # 转为数值型年份
DT::datatable(df)6.2 图形5——折线图
# 绘制折线图
ggplot(df,aes(x=日期,y=指标值,color=指标))+ # 设置x轴、y轴和线的颜色
geom_line(size=0.8)+ # 绘制折线图
geom_point(aes(shape=指标),size=2)+
scale_color_manual(
values = c("#FF9F33", "#4DAF4A")) +
theme(axis.text.x=element_text(size=7,angle=90,hjust=1,vjust=1),
legend.position = "bottom", # 可以指定图例位置(right/left/top/bottom)
legend.title = element_text(size = 10), # 图例标题大小
legend.text = element_text(size = 10) # 图例文字大小
)+
theme(panel.grid.minor.x=element_blank(), # 去掉x轴次网格线
panel.grid.minor.y=element_blank())+ # 去掉y轴次网格线
scale_x_continuous(
breaks = seq(min(df$日期), max(df$日期), by = 1), # 每年一个刻度
expand = c(0, 0)
)+
facet_wrap(~地区,ncol=2,scale="free") # 按指标分面,并单独设置各分面图的y轴刻度- 图形解读:四个省份的收入都是呈上升趋势,符合经济规律。2002年至2022年的广东省经营净收入小于工资性收入,工资性收入的增长速率大于经营净收入;河北省2010年后,工资性收入大于经营净收入,且增长速率变大,两者的差值逐年增大;黑龙江省和西藏的工资性收入均小于经营净收入,黑龙江省两者的差距也是逐年增大,但西藏两者差值先增大后又有减小趋势。