library(DT)
library(tidyverse)
options(DT.options = list(pageLength = 10))
data <- read.csv("car_info_test.csv")
data$CUST_SEX <- factor(data$CUST_SEX,levels = c(1,2),labels = c("男","女"))
data$BUYERPART <- factor(data$BUYERPART,levels = c(1,2,3,4,5),labels = c("个人","公司","机关","组织","其他"))
datatable(data)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
数据为从kaggle上下载的统计竞赛2020.07,4S店客户基础信息数据。
变量名称如下:
CUST_SEX 客户性别:1=男 2=女
CUST_AGE 客户年龄
BUYERPART 车主性质:1=个人, 2=公司, 3=机关, 4=组织,5=其他
CAR_MODEL 车型代码
CAR_COLOR 车型颜色
CAR_AGE 车龄:单位:天
CAR_PRICE 车辆销售价格
IS_LOAN 是否贷款买车
LOAN_PERIED 贷款期限:1=6个月,2=9个月,3=12个月,4=24个月,5=36个月,6=48个月,7=60个月,8=其他
LOAN_AMOUNT 贷款金额
F_INSORNOT 新车投保是否在4s店
ALL_BUYINS_N 在4S店购买保险总次数
DLRSI_CNT 购买4S店专修险的次数
GLASSBUYSEPARATE_CNT 购买玻璃单独险的次数
SII_CNT 购买自燃险的次数
IS_LOST 是否流失:1=流失,0=未流失
2.2 图形1——点阵图
library(ggpubr)
library(RColorBrewer)
df <- select(data,CUST_SEX,BUYERPART,ALL_BUYINS_N) %>%
summarise(购险次数=sum(ALL_BUYINS_N,na.rm = T),.by = c(CUST_SEX,BUYERPART))
palette<-rev(brewer.pal(11,"RdYlGn")) # 设置调色板
ggballoonplot(df,x="BUYERPART",y="CUST_SEX", # 设置图形的x轴和y轴
shape=21, # 设置形状,默认21,可选22,23,24,25
size="购险次数",fill="购险次数", # 设置点的大小和填充颜色变量
size.range = c(7,15), # 设置最小点和最大点的范围
rotate.x.text=FALSE, # x轴文本标签不旋转
ggtheme=scale_fill_gradientn(colors=palette))+ # 设置渐变颜色
theme(axis.text.y=element_text(angle=90))+ # y轴标签旋转90度
ggtitle("客户性别和车主性质的点阵图")- 图形解读:个人性质的车主购买保险的次数在男性以及女性中均最多,且男性个人的购险次数比女性个人的更多。
3 数据分布可视化
3.1 案例数据解释与展示
数据为R语言中的纽约空气质量数据
变量说明如下:
Ozone:臭氧
Solar.R:太阳辐射
Wind:风速
Temp:温度
Month:月份
Day:日期
data <- airquality
datatable(data)3.2 图形2——镜像直方图
library(e1071) # 用于计算偏度系数和峰度系数
df <- data %>% na.omit()
mytheme<-theme(plot.title=element_text(size="12"), # 设置主标题字体大小
axis.title=element_text(size=10), # 设置坐标轴标签字体大小
axis.text=element_text(size=9), # 设置坐标轴刻度字体大小
legend.text=element_text(size="8")) # 设置图例字体大小
ggplot(data=df,aes(x=Solar.R))+mytheme+ # 绘制直方图
geom_histogram(aes(y=..density..),fill="lightgreen",color="gray50")+
geom_rug(size=0.2,color="blue3")+ # 添加地毯图,须线的宽度为0.2
geom_density(color="blue2",size=0.7)+ # 添加核密度曲线
annotate("text",x=50,y=0.007,label=paste0("偏度系数 = ",round(skewness(df$Solar.R),4)),size=3)+ # 添加注释文本和偏度系数
annotate("text",x=50,y=0.006,label=paste0("峰度系数 = ",round(kurtosis(df$Solar.R),4)),size=3)+ # 添加注释文本和峰度系数
geom_vline(xintercept=mean(df$Solar.R),linetype="twodash",size=0.6,color="red")+ # 添加均值垂线,并设置线形、线宽和颜色
annotate("text",x=mean(df$Solar.R)+0.25,y=0.0065,label=paste0("均值线 = ",round(mean(df$Solar.R),2)),size=3)+ # 添加注释文本
geom_point(x=median(df$Solar.R),y=0,shape=21,size=4,fill="yellow")+# 添加中位数点
annotate("text",x=median(df$Solar.R),y=0.0005,label=paste0("中位数 = ",round(median(df$Solar.R),2)),size=3,color="red3") # 添加注释文本- 图形解读:太阳辐射为左偏分布,偏度系数为-0.48,峰度系数为-0.97,均值为184.8,中位数为207。
4 变量关系可视化
4.1 案例数据解释与展示
数据为R语言中的纽约空气质量数据
变量说明如下:
Ozone:臭氧
Solar.R:太阳辐射
Wind:风速
Temp:温度
Month:月份
Day:日期
data <- airquality
datatable(data)4.2 图形3——散点图
df <- data %>% na.omit()
ggplot(data=df,aes(x=Solar.R,y=Temp))+
geom_point(shape=21,size=1.5,fill="deepskyblue")+
geom_rug(position="jitter",size=0.5,color="deepskyblue")+ # 添加地毯图
stat_smooth(method=loess,color="red",fill="deepskyblue",size=0.8)+
# 添加局部加权回归拟合线
geom_point(aes(x=mean(Solar.R),y=mean(Temp)),shape=21,fill="yellow",size=4)+
ggtitle("散点图+地毯图+loess拟合")- 图形解读:太阳辐射和温度在一定范围内大致呈现一种正相关趋势,而超过一定范围后大致呈负相关趋势。
5 样本相似性可视化
5.1 案例数据解释与展示
数据来源于kaggle的心脏病发作数据集
变量说明:
Age:患者的年龄
Gender:患者的生理性别(男性设置为 1,女性设置为 0)
Heart.rate:心率
Systolic Blood Pressure:收缩压
Diastolic Blood Pressure:舒张压
Blood Sugar:患者的血糖水平
Ck-mb:心肌损伤时释放的一种心肌酶水平
Troponin:一种高度特异性的心肌损伤蛋白质生物标志物水平
Result:指示患者是否经历过心脏病发作的结果标签
data <- read.csv("Medicaldataset.csv")
datatable(data)5.2 图形4——雷达图
library(ggiraphExtra)
df <- data[,-c(1:2)]
# 设置图形主题
myangle<-seq(-20,-340,length.out=8) # 设置标签角度,使之垂直于坐标轴
mytheme<-theme_bw()+ # 使用黑白主题
theme(legend.position="bottom", # 设置图例位置
axis.text.x=element_text(size=9,color="blue4",angle=myangle))
# 设置坐标轴标签字体大小、颜色和和角度
# 图(a)使用原始数据
ggRadar(data=df,aes(group=Result), # 按地区分组
rescale=FALSE, # 数据不归一化
ylim=c(-20,180), # 设置y轴范围
alpha=0, # 设置颜色透明度
size=2)+ # 设置点的大小
mytheme+xlab("指标")+ylab("指标值")+ # 设置x轴和y轴标签
ggtitle("原始数据雷达图") # 添加标题- 图形解读:雷达图表明心脏病患者的CK-mb值、Troponin值甚至Heart.rate值都会高于正常患者。
6 时间序列可视化
6.1 案例数据解释与展示
数据来源于tushare金融数据库,后经过数据预处理得到
变量说明:
日期:时间
RDP5:5日收益率
RDP10:10日收益率
RDP20:20日收益率
RDP:收益率
data <- read.csv("GoldstockRDP2025.csv")
datatable(data)6.2 图形5——时间序列动态交互图
library(dygraphs)
library(xts)
library(lubridate)
data$日期 <- ymd(data$日期) # 自动识别YYYYMMDD格式
ts <- xts(x=data[,-1],order.by = data$日期)
dygraph(data=ts$RDP,xlab="时间",ylab="RDP",main="RDP的动态交互图")- 图形解读:中国黄金股票RDP(收益率)为2025年1月至2025年6月的收益率数据,从时序图上看,其大致平稳,即没有明显的周期或趋势。