library(DT)
library(data.table)
library(ggplot2)
library(reshape2)
data1<- as.data.table(HairEyeColor)
datatable(data1, options = list(pageLength = 5, rownames = FALSE))数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- Hair:发色 Eye:眸色 Sex:性别
2.2 图形1——
hair_eye_sex <- as.data.frame(HairEyeColor)
colnames(hair_eye_sex) <- c("Hair", "Eye", "Sex", "Freq")
ggplot(hair_eye_sex, aes(x = Hair, y = Freq, fill = Eye)) +
geom_bar(stat = "identity") +
facet_wrap(~ Sex) +
labs(title = "按性别分面的发色与眸分布",
x = "发色",
y = "频数") +
scale_fill_manual(values = c(Brown = "brown",
Blue = "blue",
Hazel = "tan",
Green = "green")) +
theme_minimal()- 图形解读:由该堆叠条形图可知棕色发色最常见的眸色是棕色和蓝色,金发的人更可能有蓝色的眼睛,黑色头发的人眼睛颜色多为棕色,红发的人眼睛颜色分布较为多样
3 数据分布可视化
3.1 案例数据解释与展示
- Sepal.Length:花萼长度 Species:品种
data2<- as.data.table(iris)
datatable(data2, options = list(pageLength = 5, rownames = FALSE))3.2 图形2——
ggplot(iris, aes(x = Sepal.Length, fill = Species)) +
geom_histogram(binwidth = 0.2, alpha = 0.7, position = "identity") +
facet_wrap(~Species, ncol = 3) +
labs(title = "鸢尾花品种的花萼长度分布",
x = "花萼长度 (cm)",
y = "频数") +
theme_minimal()- 图形解读:由该直方图Setosa的花萼长度通常较短,而Virginica的花萼长度通常较长,Versicolor介于两者之间。
4 变量关系可视化
4.1 案例数据解释与展示
- mpg:油耗 hp:马力
data3<- as.data.table(mtcars)
datatable(data3, options = list(pageLength = 5, rownames = FALSE))4.2 图形3——
ggplot(mtcars, aes(x = hp, y = mpg)) +
geom_point(size = 3, alpha = 0.7, color = "steelblue") +
geom_smooth(method = "lm", se = FALSE, color = "red") +
labs(title = "油耗与马力的关系",
x = "马力 (hp)",
y = "每加仑英里数 (mpg)") +
theme_minimal()- 图形解读:由该回归线散点图可知马力(hp)与油耗(mpg)之间存在明显的负相关关系;随着马力的增加,油耗效率(每加仑英里数)趋于下降
5 样本相似性可视化
5.1 案例数据解释与展示
- Sepal花萼Petal花瓣Length长度Width宽度
data4<- as.data.table(iris)
datatable(data4, options = list(pageLength = 5, rownames = FALSE))5.2 图形4——
species_means <- aggregate(. ~ Species, data=iris, mean)
melted_means <- melt(species_means, id.vars="Species")
ggplot(melted_means, aes(x=variable, y=Species, fill=value)) +
geom_tile() +
scale_fill_gradient(low="yellow", high="red") +
geom_text(aes(label=round(value, 2)), color="black", size=3) +
labs(title="鸢尾花品种特征均值热力图",
x="特征", y="品种") +
theme_minimal() +
theme(axis.text.x = element_text(angle=45, hjust=1))- 热力图中颜色的深浅代表了特征值的大小或相关性强度,直观地比较不同品种的相似性。由该热力图可知setosa在花瓣尺寸上明显小于其他两个品种,virginica的花瓣尺寸最大,versicolor介于两者之间
6 时间序列可视化
6.1 案例数据解释与展示
- 年份,月份,乘客数量
library(forecast)
data("AirPassengers")
ap <- AirPassengers
dt_ap <- data.table(
Year = floor(time(ap)),
Month = cycle(ap),
Passengers = as.numeric(ap)
)
print(dt_ap) Year Month Passengers
<ts> <ts> <num>
1: 1949 1 112
2: 1949 2 118
3: 1949 3 132
4: 1949 4 129
5: 1949 5 121
---
140: 1960 8 606
141: 1960 9 508
142: 1960 10 461
143: 1960 11 390
144: 1960 12 432
6.2 图形5——
ap_df <- data.frame(
date = as.Date(paste(floor(time(AirPassengers)),
cycle(AirPassengers), "01", sep = "-")),
passengers = as.numeric(AirPassengers)
)
ap_df$year <- as.factor(format(ap_df$date, "%Y"))
ap_df$month <- factor(month.abb[as.numeric(format(ap_df$date, "%m"))],
levels = month.abb)
ggplot(ap_df, aes(x = month, y = passengers, group = year, fill = year)) +
geom_area(position = "identity", alpha = 0.4) +
geom_line(aes(color = year), size = 0.5) +
labs(title = "AirPassengers季节性趋势(1949-1960)",
subtitle = "按月分年的乘客数量面积图",
x = "月份", y = "乘客数量(千人)",
fill = "年份", color = "年份") +
scale_fill_viridis_d() +
scale_color_viridis_d() +
theme_minimal() +
theme(legend.position = "bottom",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))- 图形解读:由该时间序列面积图可知乘客数量明显增长,十年来翻了三倍;6-8越乘客最多,11-2越最低。