列名作为分类值时如何画出统计图

本文介绍如何在润乾报表中使用列名作为分类值绘制统计图,通过list()函数实现列名集合化,case()函数确保系列值与列名正确匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一般来说,在报表中设计的统计图要用到两个变量值,一个是分类值,一般是统计中的横轴,还有一个就是系列值,相应的就是统计图中的纵轴。绝大多数情况下,分类值与系列值都是来源于表中的数据,也就是说,统计图是基于数据库表中的记录来设计器的,例如下面这个统计图:

一般会来自于这样的数据:

但是,有时会遇到下面这样的数据:

显然,如果还需要做出前面的统计图,那么分类值和系列值就需要使用数据库中的列名也就是字段名了。说实话,小编以前看到这种数据除了摇头,也就是想办法重新设计一张数据表,把所有列名存入一个字段,然后再进行数据转换和导入了。不是小编无能,没办法直接用这些数据画出统计图,实在是因为列名与列名之间都是独立的个体,并没有一个整体的概念,所以也就没有办法表示出对应的占比情况了。但是修改数据库这种操作往往用户是极不愿意接受的,那么,这种统计图就做不了了吗?

现在,经过技能升级的小编可以负责任地告诉你,润乾报表完全可以不修改数据表就搞定问题!

还是用上图的数据和图表来展示一下润乾报表的这个秘技:

首先, 设计报表模板:

其中:

A1:= ds1.select(设备类型),扩展方向为横向。

A2:=list(“待机时间“,”空转时间“,”加工时间“),扩展方向为横向。

A3:=case(A2,”待机时间“,ds1. 待机时间,”空转时间“,ds1. 空转时间,”加工时间“, ds1. 加工时间)

这里用到了 list()和 case() 函数,是因为系列值实际上是分类轴的一个附属格,而报表画图的时候,只是把分类轴当成集合,系列值是当成一个值来画的,所以这里只取了 list 的第一个值。

看一下统计图中的设置:

接下来,保存,看下展现的效果,如下图:

噹噹噹… 一个列名作为分类的统计图报表就完成了。

我们来回顾一下其中遇到的问题和解决的技巧:

1. 列名集合化

【技巧】使用 list() 函数获得一个枚举的数据集合。

2. 系列值正确匹配列名

【技巧】使用 case() 函数使数据与列名匹配。

帮我添加一个模型拟合效果图的代码,并且图中需要有回归方程,还有点的图例,让他像sci文章里的回归方程图一样,### 1. 加载包与检查环境 if (!require("mgcv")) install.packages("mgcv") # 确保mgcv包已安装 library(mgcv) ### 2. 数据读取与预处理 # 读取数据(注意文件路径和编码) tryCatch( { data <- read.csv("C:/Users/Administrator/Desktop/08102710001.csv", header = TRUE, fileEncoding = "UTF-8") cat("数据读取成功!\n") }, error = function(e) { stop("文件读取失败,请检查路径或文件名是否为0810.csv") } ) # 检查关键变量是否存在 required_vars <- c("LST_0810", "TEM", "BD", "water", "green", "RD", "JZ", "road_DIST", "NDVI", "water_DIST", "Green_DIST") if (!all(required_vars %in% colnames(data))) { stop("数据列名缺失或与TEM/BD/RD不匹配") } # 删除缺失值(按需替换为插补方法) data_clean <- na.omit(data) cat("删除缺失值后剩余", nrow(data_clean), "条有效数据\n") library(ggplot2) ggplot(data, aes(x=LST_0810)) + geom_histogram(bins=30, fill="skyblue") + theme_bw() ### 3. 构建GAM模型 # 全变量平滑模型(默认自由度) model <- gam( TEM ~ s(LST_0810) + s(BD) + s(road_DIST) + s(water_DIST) + s(NDVI) + s(RD) + s(green) + s(JZ) + s(water) + s(Green_DIST), # 所有自变量施加平滑 data = data_clean, method = "REML", # 推荐参数估计方法 family = gaussian() # 适用于连续型因变量 ) ### 4. 模型诊断与解读 # 模型摘要(关注显著性和解释力) cat("----- 模型摘要 -----\n") print(summary(model)) # 诊断残差与模型假设(需观察图形是否合理) cat("\n----- 模型诊断 -----\n") gam.check(model) ### 5. 可视化效应曲线 # 生成各变量的平滑效应图(含残差) cat("\n----- 效应可视化 -----\n") par(mfrow = c(2, 2)) # 设置2x2画布 plot(model, pages = 1, residuals = TRUE, all.terms = TRUE) par(mfrow = c(1, 1)) # 恢复默认画布
最新发布
03-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值