library(tidyverse)
library(DT)
= as.data.frame(HairEyeColor)
data ::datatable(data,rownames = FALSE) DT
library(ggplot2)
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过datatable
函数展示,并简要解释数据来源和变量意义。
每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档“8、期末报告”
列中。
评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
数据来源:
该数据集来源于:
R语言内置的datasets
包中的HairEyeColor
数据
原始数据收集自592名统计学学生的特征统计
变量意义:
变量名 | 说明 |
---|---|
Hair |
头发颜色(类别变量) 取值:Black(黑), Brown(棕), Red(红), Blond(金) |
Eye |
眼睛颜色(类别变量) 取值:Brown(棕), Blue(蓝), Hazel(淡褐), Green(绿) |
Sex |
性别(类别变量) 取值:Male(男), Female(女) |
Freq |
对应组合的人数(数值变量) |
library(tidyverse)
library(DT)
= as.data.frame(HairEyeColor)
data ::datatable(data,rownames = FALSE) DT
library(ggplot2)
library(tidyverse)
library(DT)
library(sjPlot) # 社会统计数据可视化
library(sf)
library(ggiraphExtra)
library(gridExtra) # 为使用图形组合函数grid.arrange
library(treemap) # 树状图
library(vcd)
library(ggpubr)
library(RColorBrewer)
library(d3r) # 为了使用d3_nest函数
library(sunburstR)
library("ggiraphExtra")
options(DT.options = list(pageLength = 6))
# 数据准备
<- data %>% select(Sex,Hair,Freq) %>%
df summarise(n=sum(Freq),.by=c(Sex,Hair)) %>%
rename(性别=Sex,头发颜色=Hair,人数=n)
::datatable(df,rownames = FALSE) DT
# 图(a)垂直并列条形图
<-ggplot(df,aes(x=性别,y=人数,fill=头发颜色))+
p1geom_col(width=0.8, # 设置条形宽度
position="dodge", # 绘制并列条形图
color="gray50")+ # 设置条形图的边框颜色
scale_fill_brewer(palette="Set2")+ # 设置填充颜色
geom_text(aes(label=人数),position=position_dodge(0.9),vjust=-0.5,size=3)+ # 设置标签垂直位置和字体大小
ylim(0,1.1*max(df$人数))+ # 设置y轴范围
ggtitle("(a) 垂直并列条形图")
# 图(b) 水平并列条形图
<-ggplot(df,aes(x=性别,y=人数,fill=头发颜色))+
p2geom_col(width=0.7,color="gray50")+ # 绘制堆叠条形图(默认)
geom_text(aes(label=人数),position=position_stack(0.5),size=3)+
scale_fill_brewer(palette="Set2")+
ggtitle("(b) 垂直堆叠条形图")
grid.arrange(p1,p2,ncol=2) # 按2列组合图形
该数据集来源于:
R语言内置的datasets
包中的iris
数据
1936年植物学家Edgar Anderson在加拿大加斯佩半岛采集的鸢尾花样本
统计学家Ronald Fisher的经典分析案例
变量意义:
变量名 | 说明 |
---|---|
Sepal.Length |
花萼长度(厘米,连续变量) |
Sepal.Width |
花萼宽度(厘米,连续变量) |
Petal.Length |
花瓣长度(厘米,连续变量) |
Petal.Width |
花瓣宽度(厘米,连续变量) |
Species |
鸢尾花种类(类别变量) 取值:setosa, versicolor, virginica |
library(tidyverse)
library(DT)
library(gridExtra) # 为使用图形组合函数grid.arrange
library(ggiraphExtra)
library(e1071) # 用于计算偏度系数和峰度系数
library(ggridges) # 山峦图
library(ggpubr) # 带有方差分析信息的箱线图和小提琴图
library(ggbeeswarm) # 蜂群图
library(ggpubr)
library(RColorBrewer)
library(plyr)
# 设置图形主题
<-theme(plot.title=element_text(size="12"), # 设置主标题字体大小
mythemeaxis.title=element_text(size=10), # 设置坐标轴标签字体大小
axis.text=element_text(size=9), # 设置坐标轴刻度字体大小
legend.text=element_text(size="8")) # 设置图例字体大小
options(DT.options = list(pageLength = 6))
= iris
data1 datatable(data1,rownames = FALSE)
library(ggplot2)
library(e1071)
# 使用iris数据集
<- iris
df # 计算关键统计量
<- round(skewness(df$Petal.Width), 4)
skew_val <- round(kurtosis(df$Petal.Width), 4)
kurt_val <- round(mean(df$Petal.Width), 2)
mean_val <- median(df$Petal.Width)
median_val # 创建直方图与密度曲线
ggplot(data = df, aes(x = Petal.Width)) +
geom_histogram(
aes(y = ..density..),
fill = "lightgreen",
color = "gray50",
bins = 15 # 调整箱数适应数据范围
+
) geom_density(color = "blue2", size = 0.7) +
# 添加统计指标注释
annotate("text", x = 1.2, y = 1.2,
label = paste0("偏度系数 = ", skew_val), size = 4) +
annotate("text", x = 1.2, y = 1.1,
label = paste0("峰度系数 = ", kurt_val), size = 4) +
# 添加均值线
geom_vline(
xintercept = mean_val,
linetype = "twodash",
size = 0.6,
color = "red"
+
) annotate("text", x = mean_val, y = 0.1,
label = paste0("均值 = ", mean_val),
size = 4, color = "red") +
# 添加中位数点
geom_point(
x = median_val,
y = 0,
shape = 21,
size = 4,
fill = "yellow"
+
) annotate("text", x = median_val, y = 0.05,
label = paste0("中位数 = ", median_val),
size = 4) +
# 美化主题
theme_minimal() +
labs(
title = "鸢尾花花瓣宽度分布分析",
x = "花瓣宽度 (厘米)",
y = "概率密度"
)
变量示例:
country
:国家
year
:年份
lifeExp
:预期寿命
pop
:人口
gdpPercap
:人均 GDP
= Loblolly
data2 datatable(data2)
# 加载数据
<- Loblolly
df head(df)
Grouped Data: height ~ age | Seed
height age Seed
1 4.51 3 301
15 10.89 5 301
29 28.72 10 301
43 41.74 15 301
57 52.70 20 301
71 60.92 25 301
library(ggplot2)
library(ggExtra)
# 绘制主图
<- ggplot(data = df, aes(x = age, y = height)) +
p1 geom_point(shape = 21,size = 3,fill = "#4DAF4A",color = "white",alpha = 0.8,stroke = 0.5) +
geom_rug(color = "#377EB8", alpha = 0.6) +
stat_smooth(method = "loess",formula = y ~ x,color = "#E41A1C",fill = "#FF7F00",
size = 1.2,alpha = 0.2) +
geom_point(aes(x = mean(age), y = mean(height)),shape = 23,fill = "#FFFF33",color = "black",size = 5,stroke = 1) +
labs(title = "Loblolly松树:树龄与树高的关系",x = "树龄(年)",y = "树高(英尺)") +
scale_x_continuous(limits = c(5, 25)) +
scale_y_continuous(limits = c(0, 65)) +
theme_minimal(base_size = 12) +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
panel.grid.major = element_line(color = "grey90"),
panel.grid.minor = element_blank(),
axis.line = element_line(color = "grey30"),
axis.title = element_text(face = "bold")
)ggMarginal(p1,type = "density",color = "#984EA3",fill = "#DECBE4",alpha = 0.7,size = 4)
<- USArrests
data3 datatable(data3)
# 加载数据和包
library(dplyr)
library(graphics)
# 数据预处理
<- USArrests %>%
mat scale() %>% # 标准化数据(均值为0,标准差为1)
as.matrix()
rownames(mat) <- rownames(USArrests) # 设置州名为行名
# 绘制星图
par(mar = c(0.1, 0.1, 2, 0.1)) # 调整图形边距
stars(mat,
full = TRUE, # 满圆显示
scale = FALSE, # 已手动标准化,无需再次缩放
nrow = 5, # 每页7行布局(共50州,分多页显示)
len = 0.6, # 缩短半径长度避免重叠
key.loc = c(18, 1.5), # 图例位置调整
draw.segments = TRUE, # 使用扇形分段(更直观)
col.segments = hcl.colors(4, "Viridis"), # 使用Viridis配色
labels = rownames(mat), # 显示州名标签
cex = 0.6, # 标签字体大小
main = "美国各州犯罪率星图分析", # 标题
frame.plot = FALSE # 移除边框
)
图形解读:通过该图像我们可以看出每个州的星图被分为4个扇形区域,分别代表:谋杀(Murder),
袭击(Assault),城市人口(UrbanPop),强奸(Rape)。其中犯罪率最低的是virginia.
library(pageviews)
wp_data <- article_pageviews(project=“en.wikipedia”,
article=“R_(programming_language)”,
start=“2020010100”, end=“2020123100”)
datatable(wp_data)
library(tidyverse)
library(lubridate)
library(readr)
<-read_csv("C:/Users/86139/Desktop/sz50chengfengu.csv")
datadatatable(data)
<- data %>%
df mutate(
= as.Date(日期, format = "%Y/%m/%d")
日期 %>%
) filter(日期 >= as.Date("2019/1/2") &
<= as.Date("2019/2/2")) %>%
日期 select(日期, 名称, 收盘价)
<-theme(legend.position=c(0.1,0.9), # 将图例放在图内
mythemelegend.background=element_blank()) # 移除图例整体边框
ggplot(df,aes(x=日期,y=收盘价,color=名称))+ # 设置x轴、y轴和线的颜色
geom_line(size=1.0)+
+ggtitle("合并收盘价折线图") mytheme