라인 그래프란? - 시간에 따른 변화를 추적 확인할 때 매우 효과적인 그래프 ex. 제품의 가격 변동과 판매량과의 관계 - 두변수간의 관계를 시각화 할때 유용 - 경향성 분석 ex. 년도별로 출산율이 저하되는지 확인
문법1. plotly 로 강남역 시간대별 승하차수를 라인 그래프로 시각화 하시오.
#예제1. 승차수 라인만 출력하시오
# plotly 패키지 로드
library(plotly)
# 작업 디렉토리 설정
setwd("c:\\data")
# 데이터 로드
data <- read.csv("2호선_강남역_시간대별_승하차현황_수정2.csv", header = TRUE, fileEncoding = "euc-kr")
data
# plotly를 사용한 라인 그래프 생성 (승차수 라인만 출력)
fig <- plot_ly(data, x = ~time) %>%
add_trace(y = ~in_cnt, name = '승차', type = 'scatter', mode = 'lines+markers', line = list(color = 'blue'))
# 그래프 출력
fig
문법2. 위 그래프의 하차수도 라인그래프로 추가하시오.
# plotly를 사용한 라인 그래프 생성 (승차수, 하차수 라인 출력)
fig <- plot_ly(data, x = ~time) %>%
add_trace(y = ~in_cnt, name = '승차', type = 'scatter', mode = 'lines+markers', line = list(color = 'blue')) %>%
add_trace(y = ~out_cnt, name = '하차', type = 'scatter', mode = 'lines+markers', line = list(color = 'red'))
# 그래프 출력
fig
문제1. 한국 출산율 데이터를 데이터 프레임으로 생성하시오. (라인그래프 시각화)
# 데이터 업로드드
setwd('c:\\data')
birth <- read.csv('korea_birth.csv',header =T, fileEncoding ='euc-kr')
birth
# plotly를 사용한 라인 그래프 생성 (승차수, 하차수 라인 출력)
fig <- plot_ly(birth, x = ~k_year) %>%
add_trace(y = ~birth_rate, name = '출산율', type = 'scatter', mode = 'lines+markers',
line = list(color = '#FFCCBC'), marker=list(color='#BBDEFB'))
#제목 출력
fig <- fig%>% layout(title ='1970-2023년 까지의 출산율')
# 그래프 출력
fig
# plotly 패키지 로드
library(plotly)
# 작업 디렉토리 설정
setwd("c:\\data")
# 한국 출산율 데이터 로드
korea_data <- read.csv("korea2.csv", header = TRUE)
# 일본 출산율 데이터 로드
japan_data <- read.csv("japan2.csv", header = TRUE)
# 데이터 프레임을 합치기 위해 열 이름 통일
colnames(korea_data) <- c("year", "birth_rate")
colnames(japan_data) <- c("year", "birth_rate")
# 출처를 구분하기 위한 열 추가
korea_data$country <- "Korea"
japan_data$country <- "Japan"
# 두 데이터를 합치기
combined_data <- rbind(korea_data, japan_data)
#설명: rbind 는 위아래와 데이터를 연결
# cbind 는 양옆으로 데이터를 연결
# plotly를 사용한 라인 그래프 생성
fig <- plot_ly(combined_data,
x = ~year,
y = ~birth_rate,
color = ~country,
colors = c('blue', 'red'),
type = 'scatter', mode = 'lines+markers')
# 그래프 출력
fig
설명: color = ~country 를 사용하게 되면 국가별로 다른 색상을 사용을 합니다.
국가별로 라인 그래프가 그려지는데 colors = c('blue', 'red') 를 지정해서
라인색깔로 국가를 구분합니다.
문제3. 1~4호선 승하차 승객수 데이터 프레임 만들고 시각화 하시오 (x축 시간/ y축 승객수 / 승차수가 in 만 가지고 라인그래프를 그리시오)
# 작업 디렉토리 설정
setwd("c:\\data")
# 지하철철 데이터 로드
data <- read.csv("1-4호선승하차승객수_수정된것.csv", header = TRUE)
data
# plotly를 사용한 라인 그래프 생성
fig <- plot_ly(data,
x = ~time,
y = ~in.,
color = ~line_no,
colors = c('blue', 'red'),
type = 'scatter', mode = 'lines+markers')
# 그래프 출력
fig
문제4. 지하철1-4호선 승차수를 라인그래프로 출력하는데 아래의 코드를 line_plot.R이라는 이름으로 C드라이브 밑에 저장하세요. (line_plot.R 이라는 이름으로)
library(plotly)
data <- read.csv("1-4호선승하차승객수_수정된것.csv", header=TRUE)
data
# plotly를 사용한 라인 그래프 생성
fig <- plot_ly(data,
x = ~time,
y = ~in.,
color = ~line_no,
colors = c('blue', 'red'),
type = 'scatter', mode = 'lines+markers')
# 그래프 출력
fig
★ 문제 5. yys.R에 3번 코드로 line_plot.R 을 추가하시오.
# 필요한 패키지 로드
library(svDialogs)
library(plotly)
# 옵션 메시지 정의
options_list <- list("1: 막대 그래프 코드", "2: 원형 그래프 코드", "3: 라인 그래프 코드")
# 사용자 입력 받기 (대화 상자 사용)
dialog_result <- dlgList(options_list, title = "번호를 선택하세요")$res
# switch 문을 사용해서 선택에 따라 다른 메세지 출력 및 실행
if (is.null(dialog_result)) {
cat("유효하지 않은 선택입니다.\n")
} else {
num <- as.integer(substr(dialog_result, 1, 1)) # 선택한 옵션의 첫 글자를 숫자로 변환
fig <- switch(as.character(num),
"1" = {
cat(readLines("bar_plot.R"), sep = "\n")
source("bar_plot.R", local = TRUE)
fig # bar_plot.R에서 생성된 fig 객체 반환
},
"2" = {
cat(readLines("pie_plot.R"), sep = "\n")
source("pie_plot.R", local = TRUE)
fig # pie_plot.R에서 생성된 fig 객체 반환
},
"3" = {
cat(readLines("line_plot.R"), sep = "\n")
source("line_plot.R", local = TRUE)
fig # pie_plot.R에서 생성된 fig 객체 반환
},
{
cat("유효하지 않은 선택입니다.\n")
NULL
}
)
if (!is.null(fig)) {
print(fig) # fig 객체를 명시적으로 출력
}
}