You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改R数据绘图脚本,通过标识列表自动替换固定前缀免手动替换

批量处理实现方案

可以通过封装函数+遍历标识列表的方式实现批量处理,无需手动替换脚本内容,稳定性更高。

1. 加载依赖包(仅需运行一次)

library("ggplot2")
library("scales")
library("zoo")
library("lubridate")
library("grid")
library("gridExtra")
library("gtable")
library("labeling")

2. 封装绘图逻辑为自定义函数

process_and_plot <- function(id_tag) {
  # 动态读取对应标识的CSV文件
  sum_plot <- read.csv(paste0("F:/br/RF/", id_tag, "_SK.csv"), header=TRUE, sep=",", dec=".", quote="")
  # 动态生成求和列名
  sum_col <- paste0(id_tag, "_SK.SUM")
  sum_plot[[sum_col]] <- rowSums(sum_plot[,-1])
  sum_plot$date.hour <- ymd_hms(sum_plot$filenames)
  sum_plot <- as.data.frame(sum_plot)
  
  # 绘图逻辑,动态列名用.data[[ ]]调用避免语法错误
  plotted <- ggplot(data=sum_plot, aes(x=date.hour, y=.data[[sum_col]])) + 
    geom_line(color="blue") + 
    scale_y_continuous(labels=comma) + 
    scale_x_datetime(position="top", labels=date_format("%F"), date_breaks="1 month") + 
    theme(
      axis.title.x=element_blank(), 
      plot.title = element_text(hjust = 0.5, size = 12, margin=margin(0,0,10,0)), 
      panel.background=element_rect(fill='white'), 
      panel.grid.major = element_line(colour = "black", linetype=3), 
      panel.grid.minor = element_blank(), 
      axis.ticks.x=element_blank()
    ) + 
    labs(
      x=paste("4WRM, ", format(sum_plot$date.hour[1], '%Y-%m-%d %T %Z')," to ", sum_plot$date.hour[nrow(sum_plot)]), 
      y="PPM"
    ) + 
    ggtitle(paste0(id_tag, " PON")) + 
    geom_vline(xintercept=as.numeric(ymd_hms("2019-07-12 06:00:00")), linetype=2, color="red") + 
    geom_vline(xintercept=as.numeric(ymd_hms("2019-09-16 06:00:00")), linetype=2, color="red") + 
    geom_line(aes(y = rollmean(.data[[sum_col]], 336, na.pad=TRUE)), color = "#111111")
  
  # 动态保存图片
  png(filename=paste0("F:/br/", id_tag, ".SK.Data.Table.plot.png"), width=30, height=5, units="in", res=600)
  grobz <- ggplotGrob(plotted)
  grobz.plot <- arrangeGrob(grobs = list(rbind(grobz, size = "last")), ncol = 1)
  grid.draw(grobz.plot)
  dev.off()
}

3. 定义标识列表批量运行

# 按需求修改此处的标识列表即可
list_data <- c("XXF","XXGF","XXGT")
# 遍历所有标识自动处理
for (id in list_data) {
  process_and_plot(id)
}

内容的提问来源于stack exchange,提问作者cap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 05:45:02