📊 R에서 실시간 데이터 수집 및 시각화 시스템 구축하기

R 예제

중급 난이도
예제 타입
11/08 등록일

R에서 실시간 데이터 수집 및 시각화 시스템 구축하기

중급
태그
예제 실습 프로젝트 R 시각화 데이터 실시간 shiny ggplot2
## 프로젝트 개요
실시간으로 수집되는 데이터를 저장하고, 실시간으로 시각화하여 사용자가 현재 상태를 쉽게 파악할 수 있도록 하는 시스템을 구축합니다. 주로 IoT나 센서 데이터 처리에 활용될 수 있는 예제입니다.

## 주요 기능
- 실시간 데이터 수집 및 저장
- 실시간 데이터 시각화 (ggplot2)
- 데이터 파일의 형식 검증 및 예외 처리
- 사용자에게 현재 상태를 알리는 알림 기능

## 사용 방법
RStudio에서 실행 가능하며, 필요한 라이브러리가 미리 설치되어 있어야 합니다. `shiny`와 `ggplot2`는 사전에 설치해 주세요.

## 확장 가능성
- 데이터 저장 방식 변경 (SQLite, MongoDB 등)
- 시각화 형식 추가 (지도, 타임라인 등)
- 사용자 인터페이스 개선 및 모바일 호환
코드 예제
# 실시간 데이터 수집 및 시각화 시스템
library(shiny)
library(ggplot2)
library(readr)

# 서버 로직
data <- reactive({
  # 파일 경로 설정
  file_path <- "data_stream.csv"

  # 파일 존재 여부 확인
  if (!file.exists(file_path)) {
    stop("데이터 파일이 없습니다. ", file_path, " 파일을 준비해 주세요.")
  }

  # 데이터 읽기
  read_csv(file_path)
})

# 시각화 함수
visualize_data <- function(data_df) {
  p <- ggplot(data_df, aes(x = timestamp, y = value)) +
    geom_line() +
    labs(title = "실시간 데이터 시각화", x = "시간", y = "값") +
    theme_minimal()

  return(p)
}

# UI 정의
ui <- fluidPage(
  titlePanel("실시간 데이터 시각화 시스템"),
  sidebarLayout(
    sidebarPanel(
      actionButton("update", "최신 데이터 업데이트")
    ),
    mainPanel(
      plotOutput("data_plot")
    )
  )
)

# 서버 정의
server <- function(input, output) {
  observeEvent(input$update, {
    tryCatch({
      # 데이터 로드 및 시각화
      data_df <- data()
      plot <- visualize_data(data_df)
      output$data_plot <- renderPlot({
        print(plot)
      })
    }, 
    error = function(e) {
      showModal(modalDialog(
        title = "오류 발생",
        message = paste("데이터 로드 중 오류가 발생했습니다.", e$message),
        footer = tags$button("확인", class = "btn btn-primary" , onclick = "window.location.href='/'")
      ))
    }
    )
  })
}

# 앱 실행
shinyApp(ui = ui, server = server)
등록일: 2025년 11월 08일 02:38
언어 정보
언어
R
카테고리
Data
인기도
#13
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요