data<-read_csv("data.csv",
col_types = cols(
日期 = col_date(format = "%Y")
) )
colnames(data) <- c("date", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10")
datatable(data,rownames = FALSE)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
该数据是从中国城市统计数据库中获取的北京市2002-2014年的数据。该数据包含以下11个变量:
date -年份
t1-总人口数
t2-在岗职工平均工资
t3-GDP
t4-人均GDP
t5-GDP增长率
t6-第一产业占GDP的比重
t7-第二产业占GDP的比重
t8-第三产业占GDP的比重
t9-社会消费品零售总额
t10-行政区域土地面积
2.2 图形1——帕累托图
palette<-rev(brewer.pal(4,"Reds")) # 设置调色板
# 绘制条形图
p <- ggplot(data, aes(x = date, y = t3)) +
geom_col(
width = 0.8,
fill = rep(palette, length.out = nrow(data)), # 循环使用颜色
color = "grey50"
) +
scale_fill_manual(values = palette) +
geom_text(aes(x=date,y=t3,label=t3,vjust=-0.5),size=3,color="gray50")+ # 添加数值标签,垂直调整标签位置
ylab("GDP")+ # 设置y轴标签
theme(axis.text.y=element_text(angle=90,hjust=0.5,vjust=0.5))+ # 调整y轴标签角度
theme(legend.position="none") + # 删除图例
ggtitle("2002-2014年GDP的帕累托图")
p- 图形解读:由上图可得,在2002-2014年间北京市的GDP呈上升趋势,每年都在增长,且增长幅度比较稳定。
3 数据分布可视化
3.1 案例数据解释与展示
CO2是R自带的数据集,该数据集记录了植物在不同二氧化碳浓度下的吸收率实验数据,常用于统计建模和可视化演示。该数据集包含以下5个变量:
1.Plant - 实验植物的编号(唯一标识)
2.Type - 植物来源类型(两种生态型)
3.Treatment - 实验处理条件(是否冷藏处理)
4.conc - 二氧化碳浓度(单位:μL/L)
5.uptake - 二氧化碳吸收率(单位:μmol/m²·s)
data2 = CO2
datatable(head(data2, 20), rownames = FALSE)3.2 图形2——单变量直方图
library(ggplot2)
library(e1071) # 用于计算偏度和峰度
library(DT) # 用于交互式表格
conc_skew <- skewness(data2$conc, na.rm = TRUE)
conc_kurt <- kurtosis(data2$conc, na.rm = TRUE)
conc_mean <- mean(data2$conc, na.rm = TRUE)
conc_median <- median(data2$conc, na.rm = TRUE)
ggplot(data = data2, aes(x = conc)) +
geom_histogram(aes(y = ..density..),fill = "lightgreen",color = "gray50",bins = 20,alpha = 0.7) +
geom_rug(size = 0.2, color = "blue3") + # 密度曲线
geom_density(color = "blue2", size = 0.7, adjust = 1.5) +
annotate("text",x = max(data2$conc) * 0.7,y = 0.003,label = sprintf("偏度 = %.2f\n峰度 = %.2f", conc_skew, conc_kurt),size = 4,hjust = 0) + # 均值线
geom_vline(xintercept = conc_mean,linetype = "twodash",size = 0.6,color = "red"
) +
annotate("text",x = conc_mean,y = 0.0035,label = paste0("均值 = ", round(conc_mean, 1)),size = 3,color = "red") + # 中位数点
geom_point(aes(x = conc_median, y = 0),shape = 21,size = 4,fill = "yellow",color = "black") + # 坐标轴和标题
labs(title = "CO2浓度分布分析",x = "CO2浓度 (μL/L)",y = "密度") +
# 主题设置
theme_minimal() +theme(plot.title = element_text(hjust = 0.5, face = "bold"),panel.grid.minor = element_blank())- 图形解读:在CO2浓度小于250μL/L时,密度呈小幅度上升趋势,而在大于250μL/L时,密度呈下降趋势。
4 变量关系可视化
4.1 案例数据解释与展示
该数据是从中国城市统计数据库中获取的北京市2002-2014年的数据。该数据包含以下11个变量:
date -年份
t1-总人口数
t2-在岗职工平均工资
t3-GDP
t4-人均GDP
t5-GDP增长率
t6-第一产业占GDP的比重
t7-第二产业占GDP的比重
t8-第三产业占GDP的比重
t9-社会消费品零售总额
t10-行政区域土地面积
data<-read_csv("data.csv",
col_types = cols(
日期 = col_date(format = "%Y")
) )
colnames(data) <- c("date", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10")
datatable(data,rownames = FALSE)4.2 图形3——两变量散点图
p1 <- ggplot(data=data,aes(x=t3,y=t4))+
geom_point(shape=21,size=1.5,fill="deepskyblue")+ # 设置点的形状、大小和填充颜色
geom_rug(color="steelblue")+ # 添加地毯图
stat_smooth(method=lm,color="red",fill="blue",size=0.8)+ # 添加线性拟合线、设置线的颜色和置信带的颜色
geom_point(aes(x=mean(t3),y=mean(t4)),shape=21,fill="yellow",size=4)+ # 绘制均值点
ggtitle("散点图+地毯图+线性拟合+边际图")
ggMarginal(p1,type="densigram",color="grey50",fill="lightskyblue",alpha=0.5)- 图形解读:图形由散点图、地毯图、线性拟合和边际图组成,能够更多面的分析数据。散点大部分在同一条直线附近,且总体呈上升趋势。
5 样本相似性可视化
5.1 案例数据解释与展示
该数据是从中国城市统计数据库中获取的2002-2022年北京天津上海三个城市GDP的数据。该数据包含以下3个变量:
date -年份
t1-北京
t2-天津
t3-上海
data<-read_csv("data2.csv",
col_types = cols(
日期 = col_date(format = "%Y")
) )
colnames(data) <- c("date", "p1", "p2", "p3")
datatable(data,rownames = FALSE)5.2 图形4——雷达图
mytheme<-theme(legend.position="right", # 设置标题位置
axis.text.x=element_text(size=9,color="blue4"))
# 设置坐标轴标签字体大小、颜色和和角度
ggRadar(data=data,aes(group=date), # 按地区分组
rescale=FALSE, # 数据不归一化
ylim=c(0,8), # 设置y轴范围
alpha=0, # 设置颜色透明度
size=2)+ # 设置点的大小
mytheme+xlab("指标")+ylab("数值")+ # 设置x轴和y轴标签
ggtitle("原始数据雷达图") # 添加标题- 图形解读:由图可知,三个指标中t3最大,t1次之,t2最小。且绝大多数时候三个城市的GDP都随着年份增加,除了t2在后期有所减小。
6 时间序列可视化
6.1 案例数据解释与展示
该数据是从中国城市统计数据库中获取的北京市2002-2014年的数据。该数据包含以下11个变量:
date -年份
t1-总人口数
t2-在岗职工平均工资
t3-GDP
t4-人均GDP
t5-GDP增长率
t6-第一产业占GDP的比重
t7-第二产业占GDP的比重
t8-第三产业占GDP的比重
t9-社会消费品零售总额
t10-行政区域土地面积
data<-read_csv("data.csv",
col_types = cols(
日期 = col_date(format = "%Y")
) )
colnames(data) <- c("date", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "t9", "t10")
datatable(data,rownames = FALSE)6.2 图形5——折线图
f1<-data |> select(date,t3,t8) |>
gather(t3,t8,key="指标",value="指标值")
f2<-data |> select(date,t6,t8) |>
gather(2:3,key="指标",value="指标值") |>
mutate(指标=fct_inorder(指标))
mytheme<-theme(legend.position=c(0.8,0.3), # 将图例放在图内
legend.background=element_blank()) # 移除图例整体边框
p1<-ggplot(f1,aes(x=date,y=指标值,color=指标))+ # 设置x轴、y轴和线的颜色
geom_line(size=0.8)+
geom_point(aes(shape=指标),size=2)+ # 数值点的形状和大小
mytheme+ggtitle("(a) GDP与第三产业的折线图")
p2<-p1 %+% f2+ggtitle("(b) 第一产业与第三产业的折线图")
gridExtra::grid.arrange(p1,p2,ncol=2)- 图形解读:由图可知,在2002-2014年间,GDP都是呈现上升趋势,而第三产业占GDP的比重几乎不发生变化,都是第三产业总体来说也是逐渐递增的。第一产业占GDP的比重也是呈现上升趋势,且远高于第三产业占GDP的比重。