library(sunburstR)
library(plotly)
library(d3r)
library(openxlsx)
library(DT)# 为了使用d3_nest函数
data1<-read.xlsx("G:/数据可视化/期末报告/data1.xlsx", sheet = "Sheet1")
datatable(data1)数据可视化期末报告
1 报告要求
期末实验报告由5章节5个图形组成,每个章节需要作一个图形。
每个章节选择作什么图自主选择,作图前补充完整图形标题名称,例如:图形1——多变量条形图。
案例数据自主收集,不同章节可以公用一个数据集。但同学间不允许使用相同数据集。
每个章节的数据集合需要通过
datatable函数展示,并简要解释数据来源和变量意义。每个输出图形后需要对图形作简要解读,最少需针对图形提出一个观点。
渲染html文件保留代码展示,6月22日前将发布网址提交至共享文档
“8、期末报告”列中。评分标准:
每章节图形各20分
能有效输出图形和合理解释75%
数据独特性强10%
图形个性化强15%
2 类别数据可视化
2.1 案例数据解释与展示
- 数据来源国家统计局,按照地带和区域划分,分析中国各个省份2020-2023年金融业增加值的占比情况,比较观察金融增加值的占比,分析推测2020-2023年我国金融业发展态势良好的区域集中情况。
- 金融业增加值是指金融行业(银行、证券、保险等)在一定时期内(通常为一年)通过提供服务所创造的 新价值,是衡量金融业对经济贡献的核心指标。
2.2 图形1——旭日图
library(d3r)
df<-data1%>%select(地区,区域划分,地带划分,金融业增加值) # 根据需要调整列变量的位置
df_tree<-d3_nest(df,value_cols="金融业增加值") # 将数据框转换为“d3.js”层次结构
datatable(df,rownames = FALSE)library(sunburstR)
sunburst(data=df_tree, # 绘制旭日图
valueField="金融业增加值", # 计算大小字段的字符为vSize
count=TRUE, # 在解释中包括计数和总数
sumNodes=TRUE) # 默认总和节点=TRUE- 图形解读:在2020-2023年中国各省份的金融增加值最大的为广东省,接着是江苏、上海、北京。从地区与省份看,大部分金融增加值较大的地区来自华东,说明20-23年华东地区金融发展状况优于其他区域。从更大维度地带来观察,东部地区金融增加值占比较大。
3 数据分布可视化
3.1 案例数据解释与展示
数据来源国家统计局,包含2005-2024年居民(城市以及农村)消费价格指数,研究城市和农村居民的消费水平发展情况。
城市居民消费价格指数是衡量城市家庭日常生活消费的一篮子商品和服务价格水平随时间变化的指数,反映通货膨胀或通货紧缩的程度。
农村居民消费价格指数 是专门衡量农村地区家庭日常生活消费的一篮子商品和服务价格变动的指数,反映农村居民生活成本的涨跌情况
data2<-read.xlsx("G:/数据可视化/期末报告/data2.xlsx", sheet = "Sheet1")
datatable(data2)library(plyr)
library(tidyr)
library(tidyverse)3.2 图形2——云雨图
library(see) # 提供主题函数theme_modern
df <- data2|>
gather(城市居民,农村居民,key=指标,value=指标值) |>
mutate(指标=fct_inorder(指标))|>
ddply("指标",transform,标准化值=scale(指标值))
mytheme<-theme_modern()+
theme(legend.position="none",
plot.title=element_text(size=14,hjust=0.5)) # 调整标题位置
p1<-ggplot(df,aes(x=指标,y=标准化值,fill=指标))+
geom_violindot(dots_size=0.7,binwidth=0.07)+ # 绘制云雨图并设置点的大小和箱宽
mytheme+ggtitle("(a) 垂直排列(默认)")
p2<-ggplot(df,aes(x=指标,y=标准化值,fill=指标))+
geom_violindot(dots_size=0.7,binwidth=0.07)+
coord_flip()+mytheme+ggtitle("(b) 水平排列")
gridExtra::grid.arrange(p1,p2,ncol=2) # 按2列组合图形p1和p2图形解读:
1.城市CPI
右偏分布明显:2005-2024年间,多数年份城市CPI高于农村,且存在极端高值(例如2008年通胀、2022年供应链冲击)。
点图密集区偏高:显示城市CPI长期处于较高水平,可能与城市化进程中住房、服务成本上升直接相关。
异常值:2011年(食品价格暴涨)、2020-2022年(疫情后复苏)可能出现离群点。
2.农村CPI
分布集中对称:反映农村CPI受宏观调控影响显著,波动性较低。
点图均匀分布:说明农村通胀压力较为均衡,但2019-2021年可能出现局部峰值。变量关系可视化。
3.3 案例数据解释与展示
数据来源中国经济社会大数据研究平台-农产品成本收益专题数据库。包含粮食产出涉及的成本、利润和平均产量,通过平均总成本、平均产量和平均净利润研究生产效率。
农产品平均总成本 是指生产单位农产品(如1吨小麦、1亩蔬菜)所需的 全部费用 的平均值,反映农民投入的综合成本。
农产品平均产量单位土地面积(如每亩、每公顷)或 单位投入(如每头牲畜、每株作物)在特定周期内产出的农产品数量,反映农业生产效率的核心指标。
农产品平均净利润是指农民销售农产品后,扣除 全部成本(如种子、人工、土地租金等)后,平均每单位(如每亩、每公斤)实际赚到的利润。
把平均总成本作为X轴,当做生产投入的量化指标;粮食平均产量作为Y轴,当做生产成果的核心体现;平均净利润作为气泡大小,当做投入产出转化的经济效益。
data3<-read.xlsx("G:/数据可视化/期末报告/data33.xlsx")
datatable(data3)library(scatterplot3d)
library(psych)
library(corrgram)
library(ggplot2)3.4 图形3——气泡图
df <- data3
df$平均净利润 <- as.numeric(gsub("[^0-9.-]", "", df$平均净利润))
ggplot(df, aes(x = 平均总成本, y =粮食平均产量 , color = 平均净利润)) +
geom_point(aes(size = 平均净利润), alpha = 0.5) + # 大小映射到数值
scale_size(range = c(1, 7)) + # 连续变量的大小范围
scale_color_binned() + # 连续变量分箱着色
theme(
panel.grid.minor = element_blank(), # 移除次网格线
plot.title = element_text(size = 12), # 标题字体
legend.text = element_text(size = 9, color = "blue") # 图例样式
) +
guides(size = "none") + # 隐藏大小图例
annotate("text", x = 10, y = 12,
label = "气泡大小 = 平均净利润", size = 4)+
# 修正注释文本
scale_color_gradient2(
low = "red", mid = "pink", high = "green",
midpoint = 0, # 以零利润为分界
name = "平均净利润"
)图形解读:
粮食平均产量呈现右偏分布即高产样本少;平均总成本与平均净利润在一定区间存在正相关。产量400-450对应的最大气泡集群为平均净利润高的区域,为生产效率较高的区间。
3.5 案例数据解释与展示
数据来源中国经济社会大数据研究平台,2007-2022年北京、上海、广东在城市建设部分方面(工业节约用水、污水处理量、垃圾无害化处理量、城市绿化建设面积)支出情况。
城市工业节约用水量是指通过技术、管理或政策手段,在工业生产过程中减少的用水量或提高的水资源利用效率。
城市污水处理量是指在一定时间内(通常为一年),城市污水处理设施实际处理的污水总量,一般以万吨/年或立方米/日为单位。
城市垃圾无害化处理量是指在一定时间内(通常为一年),城市通过 环保合规方式 处理的垃圾总量。
城市绿化建设面积是指城市中 人工规划建设 的绿色植被覆盖区域的总面积,通常包括公园、绿地、行道树、草坪等,用于改善城市生态环境和居民生活品质。
data4<-read.xlsx("G:/数据可视化/期末报告/data4.xlsx")
datatable(data4)library(dplyr)3.6 图形4——星图
data4_numeric <- data4 %>% select(-城市) %>% mutate_all(as.numeric)
mat <- as.matrix(data4_numeric)
rownames(mat) <- data4$城市
stars(mat,
full=TRUE, # 绘制出满圆
scale=TRUE, # 将数据缩放到[0,1]的范围
nrow=5, # 5行布局
len=1, # 设置半径或线段长度的比例
frame.plot=TRUE, # 添加边框
draw.segments=TRUE,key.loc=c(22,1), # 绘制圆弧图,并设置位置
mar=c(1,0.1,0.1,0.1), # 设置图形边界
cex = 1, # 标签大小
labels = rownames(mat)) # 明确指定标签1- 图形解读:2007-2022年广东省在城市建设上的投入最多,接着为北京、上海。广东坚持绿化建设方面的投入,与07年相比,污水处理量有了明显的减少,说明注重绿色环保发展的理念贯彻落实的程度逐年加深。上海对比广东与北京,在绿化、污水、节水和垃圾处理方面投入较少。
4 时间序列可视化
4.1 案例数据解释与展示
- 数据来源于国泰安金融数据库,2024年四家白酒行业四家公司( 贵州茅台、五粮液、洋河股份、山西汾酒)日个股的交易情况
data5<-read.xlsx("G:/数据可视化/期末报告/data5.xlsx")
datatable(data5)4.2 图形5——地平线图
library(ggHoriPlot)
library(ggthemes) # 为了使用theme_few主题
df <-data5|> select(交易日期,名称,日个股交易金额)|>
mutate(交易日期 = as.Date(交易日期))
ggplot(df)+aes(x=交易日期,y=日个股交易金额)+
geom_horizon(origin='mean',horizonscale=10,show.legend=FALSE) + # 绘制地平线图,原点为最小值,地平线图的切割点为10,不显示图例
scale_x_date(expand=c(0,1),date_breaks="1 month",date_labels="%b")+# 设置x轴间隔为1个月(向后扩展1期)
facet_grid(名称~.)+ # 按指标分面
scale_fill_hcl(palette='RdYlBu',reverse=F)+ # 设置调色板(颜色不反转)
mytheme+ggtitle("2024年日个股交易金额地平线图")图形解读:1.从交易活跃度进行对比:贵州茅台:作为行业龙头,其交易金额通常最高,显示出较强的市场关注度和流动性。
五粮液:交易金额紧随茅台,反映其作为次龙头的市场地位。
洋河股份与山西汾酒:交易金额相对较低,但汾酒可能在某些月份(如节假日或财报季)出现阶段性活跃。
2.市场分化现象:高端酒(茅台、五粮液)的交易金额更稳定,抗波动性强;次高端及区域酒企(洋河、汾酒)的波动性更大,弹性较高。