ch0nny_log

[빅데이터분석] R _ 43. 데이터 시각화 8 (지도 그래프) 본문

빅데이터 분석(with 아이티윌)/R

[빅데이터분석] R _ 43. 데이터 시각화 8 (지도 그래프)

chonny 2024. 7. 4. 14:19
 지도 그래프를 시각화를 해야하는 이유 ?

 

 

1. 공공 정책 및 행정

    예: 범죄 지도, 선거 결과 분석, 교통 관리, 도시 계획등에서 지리적 데이터를
         이용해서 정책결정을 지원

         범죄 발생지도를 통해 경찰 순찰 경로를 최적화 하거나, 교통 혼잡 직역을
         분석하여 교통 신호 체계를 개선할 수있다.

2. 건강 과 질병

       질병 발생 지도, 전염병확상 경로 분석을 통해 공중 보건 전략을 수립합니다.

3. 마케팅 및 소매업

       고객분포 분석, 상권 분석, 지점 위치등을 최적화 할때 활용

    예:  sk telecom 에서 기지국 세울 때 적절곳에 기지국을 만들어야 할때 활용
         ( 지도 그래프, 비지도 학습의 k-means 머신러닝 )

4. 물류 및 공급망 관리
       
     예: 쿠팡의 경우에 최적의 물류 경로 최적화, 창고 위치선정, 배송 경로 조회등을 통해 운영의 효율성을 높입니다.

 

 

위도경도찾기

위도경도찾기, IP 주소확인, 일출일몰 시간, 위도경도 정의

map.esran.com

 

문제1. 세계지도를 출력하시오. 
install.packages('maps')
install.packages('mapproj')

library(maps)
library(mapproj)


map('world')​

문제 2. 중국지도만 확대해보시오.
install.packages('maps')
install.packages('mapproj')

library(maps)
library(mapproj)


map('world','china')​

문제3. 중국지도에서 특정 영역만 확대해서 보기 (경도, 위도 범위 설정)
map("world", "china", xlim=c(80, 135), ylim=c(15,55) )


# 주요 도시 표시
points(116.4074, 39.9042, col="red", pch=19) # 베이징 위치
text(116.4074, 39.9042, "Beijing", pos=4, col="red")

points(121.4737, 31.2304, col="blue", pch=19) # 상하이 위치
text(121.4737, 31.2304, "Shanghai", pos=4, col="blue")


# 중국 지도에 사용자 정의 색상 및 테마 적용
map("world", "china", fill=TRUE, col="lightblue", bg="lightgray")​



문제4. 한국 지도에서 특정 영역만 확대해서 보기 (경도, 위도 범위 설정)

# 한국 지도만 확대해서 출력
map("world", "south korea")

# 한국 지도에서 특정 영역만 확대해서 보기 (경도, 위도 범위 설정)
map("world", "south korea", xlim=c(125, 131), ylim=c(33, 39))

# 기본 한국 지도
map("world", "south korea")

# 주요 도시 표시
points(126.9780, 37.5665, col="red", pch=19) # 서울 위치
text(126.9780, 37.5665, "Seoul", pos=4, col="red")

points(129.0756, 35.1796, col="blue", pch=19) # 부산 위치
text(129.0756, 35.1796, "Busan", pos=4, col="blue")

points(127.3845, 36.3504, col="green", pch=19) # 대전 위치
text(127.3845, 36.3504, "Daejeon", pos=4, col="green")

points(126.7052, 37.4563, col="purple", pch=19) # 인천 위치
text(126.7052, 37.4563, "Incheon", pos=4, col="purple")

points(128.6014, 35.8714, col="orange", pch=19) # 대구 위치
text(128.6014, 35.8714, "Daegu", pos=4, col="orange")

# 한국 지도에 사용자 정의 색상 및 테마 적용
map("world", "south korea", fill=TRUE, col="lightblue", bg="lightgray")




문제5. 구글 지도의 우리나라 서울 지도를 시각화 하고 지하철 2호선 지도 그래프를 그리시오

■ 그래프를 그립니다.

# 필요한 패키지 설치
install.packages("ggplot2")
install.packages("ggmap")

# 패키지 로드
library(ggplot2)
library(ggmap)

# 구글 API 키 등록
register_google(key = "구글 지도 API 키")

# 데이터 로드 (서울 지하철 2호선 위경도 정보 파일 경로를 정확히 지정)

loc <- read.csv("서울지하철2호선위경도정보.csv", header = TRUE,  fileEncoding ="euc-kr" )

# 중심점 계산
center <- c(mean(loc$LON), mean(loc$LAT))

# 구글 지도 가져오기
kor <- get_map(location = center, zoom = 11, maptype = "roadmap")
ggmap(kor)

# 지도 시각화
kor.map <- ggmap(kor) + 
  geom_point(data = loc, aes(x = LON, y = LAT), size = 3, alpha = 0.7) +
  geom_text(data = loc, aes(x = LON, y = LAT + 0.005, label = 역명), size = 3)

# 지도 출력
print(kor.map)

 

문제6.  위의 dot을 빨간색, 글씨기울기를 변경하시오. 


# 필요한 패키지 설치
install.packages("ggplot2")
install.packages("ggmap")

# 패키지 로드
library(ggplot2)
library(ggmap)

# 구글 API 키 등록
register_google(key =  개인 구글 키)

# 데이터 로드 (서울 지하철 2호선 위경도 정보 파일 경로를 정확히 지정)
setwd('c:\\data')
loc <- read.csv("서울지하철2호선위경도정보.csv", header = TRUE,  fileEncoding ="euc-kr" )

# 중심점 계산
center <- c(mean(loc$LON), mean(loc$LAT))

# 구글 지도 가져오기
kor <- get_map(location = center, zoom = 11, maptype = "roadmap")
ggmap(kor)

# 지도 시각화
kor.map <- ggmap(kor) + 
  geom_point(data = loc, aes(x = LON, y = LAT), size = 3, alpha = 0.7, color=c('red')) +
  geom_text(data = loc, aes(x = LON, y = LAT + 0.005, label = 역명), size = 3, angle=45)

# 지도 출력
print(kor.map)

문제 7. 지하철 3호선 라인을 시각화 하시오
# 필요한 패키지 설치
install.packages("ggplot2")
install.packages("ggmap")

# 패키지 로드
library(ggplot2)
library(ggmap)

# 구글 API 키 등록
register_google(key = " 개인 구글 키")

# 데이터 로드 (서울지하철3호선역위경도정보를 정확히 지정)
setwd('c:\\data')
loc <- read.csv("서울지하철3호선역위경도정보.csv", header = TRUE,  fileEncoding ="euc-kr" )

# 중심점 계산
center <- c(mean(loc$LON), mean(loc$LAT))

# 구글 지도 가져오기
kor <- get_map(location = center, zoom = 11, maptype = "roadmap")
ggmap(kor)

# 지도 시각화
kor.map <- ggmap(kor) + 
  geom_point(data = loc, aes(x = LON, y = LAT), size = 3, alpha = 0.7, color=c('blue')) +
  geom_text(data = loc, aes(x = LON, y = LAT + 0.005, label = 역명), size = 3, angle=45)

# 지도 출력
print(kor.map)​

문제 8. 서울시 초등학교 통폐합 관련해서 서울시 초등학교 위치를 빨간색 점으로 표시하시오. 
# 필요한 패키지 설치
install.packages("ggplot2")
install.packages("ggmap")

# 패키지 로드
library(ggplot2)
library(ggmap)

# 구글 API 키 등록
register_google(key = 개인 구글 키 )

# 데이터 로드 (학교 위경도 정보 파일 경로를 정확히 지정)
school <- read.csv("school.csv", header = TRUE, fileEncoding = "euc-kr")

# 중심점 계산
center <- c(mean(school$LON), mean(school$LAT))

# 구글 지도 가져오기
kor <- get_map(location = center, zoom = 11, maptype = "roadmap")

# 지도 시각화
kor.map <- ggmap(kor) + 
  geom_point(data = school, aes(x = LON, y = LAT), size = 4, shape = 21, fill = "red", color = "black", alpha = 0.7)

# 지도 출력
print(kor.map)​

문제 9. 아무대나 지도를 찍어보시오.
# 구글 API 키 등록
register_google(key = "AIzaSyC2lUYwLuW6bQkmKzzOODM8cavtPUDvtDg")

# 데이터 로드 (학교 위경도 정보 파일 경로를 정확히 지정)
school <- read.csv("school.csv", header = TRUE, fileEncoding = "euc-kr")

# 중심점 계산
center <- c(mean(126.86556982413006), mean(37.550756909912735))

# 구글 지도 가져오기
kor <- get_map(location = center, zoom = 14, maptype = "roadmap")

# 지도 시각화
kor.map <- ggmap(kor) + 
  geom_point(aes(x = 126.86556982413006, y = 37.550756909912735), size = 4, shape = 21, fill = "red", color = "black", alpha = 0.7)

# 지도 출력
print(kor.map)